2012-04-26 13 views
4

を表示するには、私はジャスパーレポートを使用していますし、私のクラスパスに次のライブラリを使用しています 例外「java.lang.NoSuchMethodErrorの:org.objectweb.asm.ClassWriter」ジャスパーレポート

jasperreports-4.5.1.jar 
common-digester3-3.2.jar 
common-digester2.1.jar 
castor-1.2.jar 
commons-beanutils-1.8..0.jar 
commons-collections-2.1.1.jar 
commons-logging-1.1.1.jar 
groovy-1.2.6.jar 
asm-2.2.3.jar 
asm-3.1.jar 
asm-all-3.1.jar 
antlr-3.3.1.1.jar 
jtds-1.2.5.jar 

は、私は次の例外を得た

次のコードを実行する上
Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V 
at org.codehaus.groovy.control.CompilationUnit.createClassVisitor(CompilationUnit.java:791) 
at org.codehaus.groovy.control.CompilationUnit$14.call(CompilationUnit.java:755) 
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:967) 
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:546) 
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:524) 
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:501) 
at net.sf.jasperreports.compilers.JRGroovyCompiler.compileUnits(JRGroovyCompiler.java:96) 
at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:188) 
at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:212) 
at Utilities.ReportDriver.runReport(ReportDriver.java:81) 
at jewelleryerpapplication.GUI.MainReports.jbtnViewReportActionPerformed(MainReports.java:544) 
at jewelleryerpapplication.GUI.MainReports.access$100(MainReports.java:18) 
at jewelleryerpapplication.GUI.MainReports$2.actionPerformed(MainReports.java:210) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
at java.awt.Component.processMouseEvent(Component.java:6505) 

:私は間違って

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, jdbcConnection); 
JasperViewer.viewReport(jasperPrint); 

何をしましたか?これを修正したり、それをさらにデバッグするにはどうしたらいいですか?

+0

NoSuchMethodErrorは、ほとんどの場合、jarファイルの不一致を示します.1つのバージョンに対してコンパイルされたものの、別のバージョンで実行されていたものです。 –

答えて

4

ASMの2つの異なるバージョンがリストされています。このライブラリでは非常に一般的な問題です。なぜなら、他の多くのライブラリがそのライブラリの中でこれを使用しているからです。また、Javaのクラスパスメカニズムが同じライブラリの異なるバージョンを使用できないためです。 (これはGroovyとHibernateの間でいつも起こります。)クラスパスを設定すると、1つのライブラリが2.2.3を望んでおり、3.1が必要です。しかし、クラスを調べると、クラスパスの最初のものが勝ちます。あなたのケースでは、GroovyはClassWriterのコンストラクタを呼び出すことを試みています。コンストラクタは、実際のクラスパスの順序で列挙した場合は2.2.3になったバージョンには存在しません。さまざまなバージョンが要求されているこのような状況が発生した場合、できることはバージョンを選択して指を渡すことだけです。それが必要なあらゆるところで動作するかどうか試してみてください。ほとんどの場合、新しいASMバージョン(3.1)を使用するとすべてが問題ありません。とにかくそれは私の経験でした。すべてのバージョンで動作するバージョンが見つからない場合は、手に大きな問題があるかもしれません。

+0

asm 2.2.3およびasm-all-3.1を削除したとき、次の例外が発生しました。スレッド「AWT-EventQueue-0」の例外java.lang.AbstractMethodError:org.codehaus.groovy.control.CompilationUnit $ ClassgenCallback.call(Lorg/ObjectWebの/ ASM/ClassVisitor; Lorg/Codehausの/グルーヴィー/ AST/ClassNode;)org.codehaus.groovy.control.CompilationUnit $ 14.call(CompilationUnit.java:776)でV \t \t org.codehaus.groovy.controlで.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:967) \t(org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:546) –

+0

)クラスパスでasm-3.1.jarを使用しています。 –

+0

これは興味深いところです。あなたは、動作するものが見つかるかどうかを確認するために、ASMを使用するさまざまなバージョンの製品を試す必要があります。私はGroovyを最初に試してみたい。あなたは非常に古いバージョンを使用しています。あなたがそれをアップグレードすることで逃げることができるかどうかを見てください。 –

0

私にも同様のエラーメッセージがありました。それはASMに依存するのではなく、使用したGroovyライブラリのgroovy-x.x.x.jarにあります。この作業を行うには、groovy-all-x.x.x.jarを使用する必要があります。

関連する問題