login.jar、mainform.jar、reportview.jar などの複数のjarファイルに基づくアプリケーション。
ログイン jar は mainform.jar を呼び出し、レポート view.jar も同様に呼び出します。
したがって、レポートビュークラスには、JasperViewerでレポートを表示する方法があります。
reportSource = Reportpath + getReportname() + ".jasper";
HashMap para = new HashMap();
para.put(getReport_param1(), getParam1());
para.put(getReport_param2(), getParam2());
para.put(getReport_param3(), getParam3());
para.put(getReport_param4(), getParam4());
para.put(getReport_param5(), getParam5());
JasperPrint jp = JasperFillManager.fillReport(reportSource, para, con);
JasperViewer.viewReport(jp, false);
したがって、単一のプロジェクトとして 100% 正しく実行され、レポートが表示されます。
しかし、このクラスをメインフォームにインポートして reportview メソッドを呼び出すと、実行されませんでした。JasperReportsライブラリにはjasperreports-3.1.4.jarファイルを使用
しました。メイン メソッドでレポート モジュールを呼び出すと、正常に動作します。
しかし、別のjarから呼び出すと、このエラーが発生します。
java.lang.ClassCastException: net.sf.jasperreports.engine.base.JRBaseTextField のインスタンスをフィールド net.sf.jasperreports.engine.base.JRBaseLineBox.boxContainer のインスタンスで net.sf.jasperreports.engine.JRBoxContainer に割り当てることができませんjava.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2032) の net.sf.jasperreports.engine.base.JRBaseLineBox。 defaultReadFields(ObjectInputStream.java:1953) で java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) で java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) で java.io.ObjectInputStream.readObject0(ObjectInputStream.java) :1329) java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) で java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) で java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) で java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) でjava.io.ObjectInputStream.readObject(ObjectInputStream.java:351) で java.util.ArrayList.readObject(ArrayList.java:593) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:39) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で java.lang.reflect.Method.invoke(Method.java:597) で java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java) で:974) java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) で java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) で java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) で java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) で Java. java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) の io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) の java.io.ObjectInputStream.defaultReadFields (ObjectInputStream.java:1947) で java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) で java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) で java.io.ObjectInputStream.readObject0(ObjectInputStream.java: 1329) java.io.ObjectInputStream で。net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:85) の readObject(ObjectInputStream.java:351) net.sf.jasperreports.engine.util.JRLoader.loadObjectFromLocation(JRLoader.java:244) の readObject(ObjectInputStream.java:351) net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:316) で net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:275) で net.sf.jasperreports.engine net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1300) の .fill.JRFillBand.evaluate(JRFillBand.java:399) net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller) .java:631) net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:228) で net.sf.jasperreports.engine.fill.JRVerticalFiller で。net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:730) の fillReport(JRVerticalFiller.java:128) net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:632) のnet.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) で net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) で net.sf.jasperreports.engine.JasperFillManager .fillReport(JasperFillManager.java:234) で reportmodule.Reportmodule.getReport(Reportmodule.java:329) で Login.Login$7.run(Login.java:344)63) net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) で net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234) で reportmodule.Reportmodule.getReport(Reportmodule.java) :329) Login.Login$7.run(Login.java:344) で63) net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) で net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234) で reportmodule.Reportmodule.getReport(Reportmodule.java) :329) Login.Login$7.run(Login.java:344) で
この問題を解決するのを手伝ってください。