1

Jasper レポートをコンパイルまたは実行しようとすると、NoClassDefFoundError エラーが発生します。

2012-06-13 14:46:26,710 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/jahtest].[jahtest]] Servlet.service() for servlet jahtest threw exception
java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.xml.JRXmlDigesterFactory
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:207)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:172)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156)

war ファイルにラップされ、JBoss の default/deploy フォルダーにデプロイされた一連の Java クラスがあります。JBoss default/lib フォルダーに jasperreports-4.1.2.jar ファイルがあるため、lib フォルダー内の他のすべての jar が表示されるため、クラスパスの問題がどのように発生するかわかりません。

私のフロントエンド アプリは、リフレクションを使用して Jasper コードを含むクラスを呼び出す HTTPServlet クラスを呼び出します。この行が呼び出されるまで、すべてが正常に機能します-

JasperDesign jasperDesign = JRXmlLoader.load(strCompiledReportFile);

strCompiledReportFile は正しく、存在します。これはすべて、HTTPServlet クラスから呼び出された場合ではなく、Eclipse を介して実行した場合に機能します。

ジャスパーには多くの問題があったので、ジャスパーを捨てたいと思っています。これが最後のチャンスのサルーンです。

あなたが提供できるかもしれないどんな助けにも乾杯.

4

3 に答える 3

1

jasperが実行時に依存するいくつかのjarファイルが欠落していると思います。このスレッドをチェックして、クラスパスにもそれらのjarがあることを確認してください。

于 2012-06-13T14:19:14.690 に答える
0

それがあなたのケースにも当てはまるかどうかはわかりませんが、最近同様の問題がありました.フォントのロードに失敗した後(「フォントデータの読み取りの問題」)、Jasper Reportsはjava.lang.NoClassDefFoundError多くのクラスに偽りを与え始めました。この問題はjava.awt.Font.createFont(int fontFormat, InputStream fontStream)、一時ファイルの作成に失敗したために発生しました。エラーは Tomcat 内で発生しましたが、Eclipse 内では発生しませんでした。何が起こっていたのかというと、Tomcat が JVM を自動的に構成して、デフォルトの一時フォルダーではなく一時フォルダーを指すようにし、Tomcat の一時フォルダーが削除されていたことです。

于 2012-10-23T10:47:42.900 に答える