2011-08-22 9 views
0

私はiTextライブラリを使用してAcrobatフォームを操作しています。サーブレットはエラーなしでコンパイルされました。 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) 

だとここに私のサーブレットのコードです -

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ので見つけることができません。

  • あなたのwebappにiText .jarがパッケージ化されていますか?たぶんあなたが配備している.WARファイルを見て、そこにiTextライブラリがあるかどうかを確認してください。
  • JBossのlibフォルダに入れてください。 または/jboss-as/server/default/lib/です。

編集: この

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

のように見える程度の構造を有する終わる必要がありますあなたのJAR [マインドが、これは単純化され、すべてのファイルを表示しません...]

+0

こんにちは...私はiTextのjarファイルをクラスとXMLファイルと共にパッケージ化していません。どうすればいいですか? – Sameer

+0

あなたのアプリを.WARアーカイブとしてデプロイしていますね。そうであれば、iTextライブラリ.JARは '/WEB-INF/lib /'になければなりません。 – fgysin

関連する問題