2011-08-22 81 views
0

我正在使用iText库来处理Acrobat Forms。该servlet编译时没有任何错误。我导入了iText的外部jar文件。编译完成后,我打包并准备了一个可执行的.war文件(Main.war)并将其粘贴到jboss的deploy文件夹中。但是,执行时,我得到一个ClassNotFoundException错误。iText ClassNotFound异常

这里的堆栈跟踪

java.lang.ClassNotFoundException: com.itextpdf.text.DocumentException from [email protected]{[email protected]{name=vfszip:/E:/jboss-5.0.1.GA/server/default/deploy/Main.war/ domain=Clas 
[email protected]{name=vfszip:/E:/jboss-5.0.1.GA/server/default/deploy/Main.war/ parentPolicy=AFTER_BUT_JAVA_BEFORE [email protected]{DefaultDomain}} roots=[[email protected] 
723[path= context=vfsmemory://5c4o12z-o9ytfs-grndwcq5-1-grndwom8-1y real=vfsmemory://5c4o12z-o9ytfs-grndwcq5-1-grndwom8-1y], [email protected][path=Main.war/WEB-INF/classes context=file:/E:/jbo 
ss-5.0.1.GA/server/default/deploy/ real=file:/E:/jboss-5.0.1.GA/server/default/deploy/Main.war/WEB-INF/classes]] delegates=null exported=[] <IMPORT-ALL>NON_EMPTY}} 
     at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:422) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
     at java.lang.Class.getDeclaredConstructors0(Native Method) 
     at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 
     at java.lang.Class.getConstructor0(Class.java:2699) 
     at java.lang.Class.newInstance0(Class.java:326) 
     at java.lang.Class.newInstance(Class.java:308) 
     at org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:258) 
     at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1006) 
     at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:777) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) 
     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) 
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) 
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
     at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
     at java.lang.Thread.run(Thread.java:619) 

这是我的servlet代码 -

import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.pdf.AcroFields; 
import com.itextpdf.text.pdf.FdfReader; 
import com.itextpdf.text.pdf.PdfReader; 
import com.itextpdf.text.pdf.PdfStamper; 
import java.io.*; 
import java.net.*; 
import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class Main extends HttpServlet { 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException 
    { 
     response.setContentType("application/pdf"); 
     try{ 
     FdfReader FDF = new FdfReader(request.getInputStream()); 
     System.out.println("*************Recieved inputStream***********"); 
     InputStream is = request.getInputStream(); 
     PdfReader reader = new PdfReader(is, null); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     PdfStamper stamper = new PdfStamper(reader, baos); 
     AcroFields fields = stamper.getAcroFields(); 
     fields.setFields(FDF); 
     stamper.setFormFlattening(true); 
     stamper.close(); 
     OutputStream os = response.getOutputStream(); 
     baos.writeTo(os); 
     os.flush(); 
     } 
     catch (DocumentException DE) 
     { 
      throw new IOException(DE.getMessage()); 

     } 
    } 

    public void doPost(HttpServletRequest request,HttpServletResponse response) 
    throws ServletException, IOException { 
doGet(request, response); 
} 

} 

谁能告诉我是什么问题?????它的紧迫请..

萨米尔

回答

0

貌似DocumentException会被抛出,但相应的类不能由JBoss的发现。

  • 您确定iText .jar与您的webapp打包在一起吗?也许看看你正在部署的.WAR文件,并检查是否存在iText库...
  • 如果没有(或者你不想)确保把它放在JBoss的lib文件夹中。在或/jboss-as/server/default/lib/

编辑: 你的JAR应该结束了具有看上去只有这样

. 
|-- index.html 
|-- META-INF 
| `-- MANIFEST.MF 
| 
`-- WEB-INF 
    |-- classes 
    | `-- <your code is here> 
    | 
    `-- lib 
     `-- <here are your packaged .jar files> 

的结构[记住,这简化并没有显示所有文件...]

+0

嗨...我没有打包iText jar文件以及类和xml文件。我应该怎么做? – Sameer

+0

您正在将您的应用程序部署为.WAR存档,对不对?如果是这样,iText库.JAR应该进入'/WEB-INF/lib /'。 – fgysin