2017-08-15 2 views
0

Ich habe ein Java-Programm, das dynamische Berichte in netbeans gut verwendet, und funktioniert auch in exe und jar, wenn ich es zum ersten Mal ausführen. Allerdings, wenn ich die jar/exe teile (ich habe es sogar gesendet und wieder auf meinem eigenen Computer heruntergeladen), bekomme ich einen Fehler . Allerdings habe ich meine Gläser überprüft und ich habe diese Klasse. Was könnte dann die Ursache für dieses Problem sein?Dynamische Berichte classnotfundexception

enter image description here

Dank

Edit: voller Fehler:

Exception in thread "main" java.lang.NoClassDefFoundError: 
net/sf/jasperreports/engine/JRDataSource 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
at java.lang.Class.privateGetMethodRecursive(Unknown Source) 
at java.lang.Class.getMethod0(Unknown Source) 
at java.lang.Class.getMethod(Unknown Source) 
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source) 
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: 
net.sf.jasperreports.engine.JRDataSource 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
... 7 more 

Antwort

0

wenn Sie Caused by: java.lang.ClassNotFoundException: in einer JAR-Datei dann zu erhalten, müssen Sie die Classpath Argumente liefern;
Beispiel:

java -cp my.jar -jar ExternalJarFileName.jar 

Sie können auch alle Gläser unter Befehl liefern, müssen nur ein Verzeichnis erstellen und alle externen Gläser in setzen und unter Befehlspfad des Verzeichnisses in verwenden:

java -cp my.jar;C:\externalJar\* mainpackage.MainClass 
+0

Soll das in meinem Code gehen? Oder lege ich es in die Eingabeaufforderung? Außerdem ist my.jar das Jar für mein Programm und externaljarfilename ist das Jar, in dem die Klasse nicht gefunden wurde, oder? Tut mir leid, ich bin ein bisschen neu. – Evan

+0

Ich habe meinem Code folgendes hinzugefügt, aber es funktioniert immer noch nicht: ' ' try { Runtime rt = Runtime.getRuntime(); Prozess pr = rt.exec ("java -cp project.jar -jar jasperreports-6.4.0.jar"); } catch (Ausnahme e) { e.printStackTrace(); } ' ' Ist das nicht, was ich tun sollte oder ist etwas anderes falsch? – Evan