JasperReport in NetBeans RCP Anwendung

Alles zu NetBeans als RCP-Platform

Moderator: wegus

Antworten
Benutzeravatar
smurfi
Site Admin
Beiträge: 1626
Registriert: 29.06.2006, 11:33
Wohnort: Wuppertal
Kontaktdaten:

JasperReport in NetBeans RCP Anwendung

Beitrag von smurfi » 26.07.2006, 11:19

Hallo,

ich versuche jetzt schon einige Zeit mit JasperReport unter NetBeans (RCP) einen Report zu öffnen.
Unter einer normalen Java-Appl oder JSP ist das ganze irgendwie kein Problem aber unter NB läuft es irgendwie nicht.
Als Fehler bekomme ich sowas, kann mir aber im moment keinen reim drauf machen (ich glaube die HITZE):

java.lang.ClassNotFoundException: org.apache.commons.collections.SequencedHashMap
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org.netbeans.ProxyClassLoader.loadInOrder(ProxyClassLoader.java:582)
at org.netbeans.ProxyClassLoader.smartLoadClass(ProxyClassLoader.java:531)
at org.netbeans.ProxyClassLoader.loadClass(ProxyClassLoader.java:163)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:584)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1543)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1465)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1698)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1917)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1841)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1718)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1917)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1841)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1718)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1917)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1841)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1718)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:88)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:515)
at de.huf.era.forms.Mitarbeiterdaten_KostenrechnungTopComponent.printAll(Mitarbeiterdaten_KostenrechnungTopComponent.java:796)
at de.huf.era.forms.Mitarbeiterdaten_KostenrechnungTopComponent.searchDataset(Mitarbeiterdaten_KostenrechnungTopComponent.java:734)
at de.huf.era.forms.Mitarbeiterdaten_KostenrechnungTopComponent.txtPersNrKeyReleased(Mitarbeiterdaten_KostenrechnungTopComponent.java:721)
at de.huf.era.forms.Mitarbeiterdaten_KostenrechnungTopComponent.access$000(Mitarbeiterdaten_KostenrechnungTopComponent.java:38)
at de.huf.era.forms.Mitarbeiterdaten_KostenrechnungTopComponent$1.keyReleased(Mitarbeiterdaten_KostenrechnungTopComponent.java:157)
at java.awt.Component.processKeyEvent(Component.java:5449)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2713)
at java.awt.Component.processEvent(Component.java:5265)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1810)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:672)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:920)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:798)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:636)
at java.awt.Component.dispatchEventImpl(Component.java:3841)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

Darf ich unter NB villeicht nicht alles so aufrufen ?


Gruss
Michael

Benutzeravatar
recJake
Beiträge: 669
Registriert: 19.07.2006, 11:50
Wohnort: IDEs

Beitrag von recJake » 26.07.2006, 12:22

Kann es sein, dass Du (oder NB) einfach nur die falsche Version von CommonsCollections benutzt?

Die Fehlermeldung deutet darauf hin.

*.collections.SequencedHashMap ist aus CC2.x

in CC3.x gibt es noch ein subpackage collections.maps.*
J..e
Willst Du coden, so code. Willst Du nutzen, so nutze. Willst Du beides, lass es!

Benutzeravatar
seapegasus
Beiträge: 594
Registriert: 29.06.2006, 18:32
Wohnort: Prag
Kontaktdaten:

Beitrag von seapegasus » 26.07.2006, 15:10

So 'ne Meldung hatte ich auch mal... Es war bei mir irgendwie inkonsistent geworden, NetBeans lief mit der einen Javaversion, aber das Projekt selbst mit einer anderen...

Benutzeravatar
smurfi
Site Admin
Beiträge: 1626
Registriert: 29.06.2006, 11:33
Wohnort: Wuppertal
Kontaktdaten:

Beitrag von smurfi » 27.07.2006, 08:58

Hallo,

um das was du beschrieben hast auszuschliessen:
seapegasus hat geschrieben:So 'ne Meldung hatte ich auch mal... Es war bei mir irgendwie inkonsistent geworden, NetBeans lief mit der einen Javaversion, aber das Projekt selbst mit einer anderen...
Habe ich alle Javar-Version bis auf 1.5.0_07 gelöscht, NetBeans neu stalliert und was soll ich sagen, die Fehlermeldung ist immer noch da.

Tja mal sehen ob ich heute noch da hinter komme, aber beim dem Wetter :wink: .


Gruss
Michael

Benutzeravatar
recJake
Beiträge: 669
Registriert: 19.07.2006, 11:50
Wohnort: IDEs

Beitrag von recJake » 27.07.2006, 09:39

Seapegasus Problem lag darin begründet, dass sie wohl versucht hat, ein Binary das mit z.B JDK1.4 erstellt wurde, mit JDK1.3 auszuführen.

Um Dein Problem noch mal etwas näher zu erklären:
Du kompilierst Deine Anwendung gegen Apache CommonsCollection 2.x. Also funktioniert der Compile problemlos.
Jetzt führst Du es aber aus, und dann liegt im Classpath entweder garkein CommonsCollections oder eine Version, die entweder die SequencedHashMap noch nicht enthält, oder aber wo die Klasse in ein anderes Package verschoben wurde.

ClassNotFoundException heisst ja nur, dass die Klasse im Classpath nicht gefunden werden kann und das kann nur einen der folgenden Gründe haben:
1. Das Binary wurde gegen eine Bibliothek erstellt, die nicht im Runtime-Classpath vorhanden ist
2. Das Binary wird gegen eine Bibliothek ausgeführt, deren Struktur gegenüber der Bibliothek geändert wurde, gegen die das Binary erstellt wurde.

In CC3 gab es im Vergleich zum CC2 grosse Umbauten. Fast die gesamte Packagestruktur wurde geändert.

Im Tomcat den Netbeans5.0 mitliefert wird z.B. CC3 benutzt.
Der Rest von NB5.0 nutzt aber noch CC2.
J..e
Willst Du coden, so code. Willst Du nutzen, so nutze. Willst Du beides, lass es!

Benutzeravatar
smurfi
Site Admin
Beiträge: 1626
Registriert: 29.06.2006, 11:33
Wohnort: Wuppertal
Kontaktdaten:

Beitrag von smurfi » 27.07.2006, 11:25

So,

habe jetzt mein Problem lösen könne. Lag an meiner unwissenheit bezüglich den Abhängigkeiten unter NetBeans.
Habe mich dazu entschlossen aus diesen Gründen ein kleines Tutorial zu verfassen http://www.netbeans-forum.de/viewtopic.php?p=83#83.

Danke an allen die mir doch irgendwie geholfen haben.
:)


Gruss
Michael

Benutzeravatar
recJake
Beiträge: 669
Registriert: 19.07.2006, 11:50
Wohnort: IDEs

Beitrag von recJake » 27.07.2006, 11:27

:D

Super!
Das Tutorial ist gut. An sowas denkt man ja garnicht. :shock:
J..e
Willst Du coden, so code. Willst Du nutzen, so nutze. Willst Du beides, lass es!

Renter

Beitrag von Renter » 01.08.2006, 09:43

Nachfrage, welche jasperReport Version kann ich dann unfallfrei mit NB 5.0 und SDK 5.0.6 nutzen?

Benutzeravatar
smurfi
Site Admin
Beiträge: 1626
Registriert: 29.06.2006, 11:33
Wohnort: Wuppertal
Kontaktdaten:

Beitrag von smurfi » 01.08.2006, 11:38

Renter hat geschrieben:Nachfrage, welche jasperReport Version kann ich dann unfallfrei mit NB 5.0 und SDK 5.0.6 nutzen?
Ich benutze hier die Version 1.2.5.

Renter

Beitrag von Renter » 01.08.2006, 11:44

bei mir mag's der compiler nicht
smurfi hat geschrieben:Ich benutze hier die Version 1.2.5.
:evil:

Benutzeravatar
smurfi
Site Admin
Beiträge: 1626
Registriert: 29.06.2006, 11:33
Wohnort: Wuppertal
Kontaktdaten:

Beitrag von smurfi » 01.08.2006, 11:48

Renter hat geschrieben:bei mir mag's der compiler nicht

:evil:
was kommt den für eine Fehlermeldung ?

Renter

Beitrag von Renter » 01.08.2006, 11:57

smurfi hat geschrieben:
Renter hat geschrieben:bei mir mag's der compiler nicht

:evil:
was kommt den für eine Fehlermeldung ?
Der erkennt die JasperReport etcpp. nicht, obwohl es lt. Anleitung in der Lib steht und diese Lib auch im Projekt bekannt ist. Drolligerweise findet die Onlinehelp, die entsprechenden Methoden, aber der Compiler will nicht...


also

net.sf.jasperreports.view.JasperViewer.viewReport(_jspPrt); zeigt keinen Fehler

JasperViewer.viewReport(_jspPrt); zeigt den allseits üblichen Fehler, kenne ich nicht.

Renter

Beitrag von Renter » 02.08.2006, 08:18

Hallo noch einmal zum Thema jasperReport.

Nutzt das einer von Euch innerhalb von JApplets? Ich habe den Compiler dazu gebracht, doch die Dinge zu finden. Die JARs aus der Lib lt. Beschreibung und die JARs aus dem Verzeichnis dist habe ich extrahiert und liegen Ordnergerecht auf dem Server des JApplets.

Bei der Ausführung erhalte ich dann allerdings diese Fehlermeldung:

Code: Alles auswählen

java.io.IOException: CreateProcess: javac -classpath C:\PROGRA~1\Java\JRE15~1.0_0\classes "C:\Dokumente und Einstellungen\renter\Desktop\HelloReportWorld_1154242919843_997034.java" error=2
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(Unknown Source)
	at java.lang.ProcessImpl.start(Unknown Source)
	at java.lang.ProcessBuilder.start(Unknown Source)
	at java.lang.Runtime.exec(Unknown Source)
	at java.lang.Runtime.exec(Unknown Source)
	at net.sf.jasperreports.engine.design.JRJavacCompiler.compileClasses(JRJavacCompiler.java:62)
	at net.sf.jasperreports.engine.design.JRAbstractClassCompiler.compileUnits(JRAbstractClassCompiler.java:67)
	at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:189)
	at net.sf.jasperreports.engine.design.JRDefaultCompiler.compileReport(JRDefaultCompiler.java:105)
	at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:211)
	at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:144)
	at javaTAS.RTK_00jasperReport(javaTAS.java:128)
	at javaTAS.actionPerformed(javaTAS.java:1027)
	at javaTAS.BUTTON_MOUSE_CLICKED(javaTAS.java:870)
	at javaTAS.access$600(javaTAS.java:38)
	at javaTAS$FormListener.mouseClicked(javaTAS.java:818)
	at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Was gilt es bei JApplets zu berücksichtigen. Die Sichewrheit - ich weiss, aber ich erhalte kein permission denied oder ähnliches, sondern eine IO-Exception und die ca 30 mal....

Benutzeravatar
recJake
Beiträge: 669
Registriert: 19.07.2006, 11:50
Wohnort: IDEs

Beitrag von recJake » 02.08.2006, 09:55

JavaDoc von ProcessBuilder.start() hat geschrieben:Starting an operating system process is highly system-dependent. Among the many things that can go wrong are:
  • - The operating system program file was not found.
    - Access to the program file was denied.
    - The working directory does not exist.
In such cases an exception will be thrown. The exact nature of the exception is system-dependent, but it will always be a subclass of IOException.
J..e
Willst Du coden, so code. Willst Du nutzen, so nutze. Willst Du beides, lass es!

Renter

Beitrag von Renter » 02.08.2006, 11:31

Meine Erwartungshaltung war (oder ist (noch)), dass das JApplet sich die Klassen und Methoden aus dem Verzeichnis saugt, in dem es selber serverseitig residiert. Das gülte dann auch für den jdt-compiler, um ein jrxml-Dokument zu kompilieren, macht es aber nicht, obwohl analog zum Beispiel auf der JasperReports Seite zum "Einbau" in die NB IDE die Source und die Destination auf den Server weisen. Offensichtlich wird die dortige jrxml auch gelesen, denn eine falsche führte zu einem anderen Fehler. Das das Kompilieren dann auf der Workstation läuft, am dem das JApplet läuft klar, aber der Rest ist für mich (derzeit) mehr als ???.

Mhhh, ich fürchte das ist auch Mist...

Angenommen, ein Applet will in den Bereich C:\...\Desktop eine Datei temporär schreiben, schafft es aber aus irgend einem Grunde nicht, um sie dann zu kompilieren, was schief läuft, weil die Datei fehlt, als welcher Nutzer will das Applet die Datei schreiben. Als Nutzer des PC der am PC angemeldet ist, oder als Nutzer des Apache-Users auf dem Server, von wo das Applet geladen wurde?

Noch mehr Mist...:

Nach dem ich nun irgendwann die javac von sdk nach jre umkopiert habe, bleibt jenes offen:

Code: Alles auswählen

ava.io.FileNotFoundException: C:\Dokumente und Einstellungen\renter\Desktop\HelloReportWorld_1154529550687_463418.class (Das System kann die angegebene Datei nicht finden)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at net.sf.jasperreports.engine.util.JRLoader.loadBytes(JRLoader.java:272)
	at net.sf.jasperreports.engine.design.JRAbstractClassCompiler.compileUnits(JRAbstractClassCompiler.java:73)
	at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:189)
...
Was mir vielleicht dann unabhängig von Applet oder nicht beantoworten kann, ist die ...xyz.class Datei, die dort erzeugt werden soll auf dem Weg von jrxml nach html eine temporäre Datei oder wofür wird eine ...xyz.class Datei erzeugt???

Antworten