# Export als .jar funktioniert nicht richtig (JAVA 3D)



## cree (26. Feb 2015)

Hallo erstmal,

hoffentlich habe ich das richtige Subforum gewählt.

Ich sitze gerade an einem 3D-Vier Gewinnt, funktioniert auch bis jetzt alles wunderbar, habe lediglich ein Problem.

Bei dem Export als .jar Datei funktioniert nichts mehr wie es soll.

Das Hauptmenü meines Spiels öffnet sich wunderbar (nachdem ich die .png's in den Ordner der .jar Datei gezogen habe). Das Optionsmenü öffnet sich auch. Wenn ich jedoch mein Spiel öffnen will, also die View öffnen (enthält das Spielfeld mit Canvas3D, SimpleUniverse) tut sich, bis auf das schließen des Menüs (gewollt), nichts.


Ich habe es bereits über die Exportfunktion von Eclipse probiert sowie über das Plugin fatjar, beides brachte keine Abhilfe.


Gruß


----------



## Thallius (26. Feb 2015)

Wie wäre es du startest das .jar mal über eine cmd-shell und schaust was der stacktrace beim Absturz so sagt?


----------



## cree (26. Feb 2015)

```
C:\Users\Toni\workspace\InhouseProjekt>java -jar test.jar
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/med
ia/j3d/Canvas3D
        at inhouse.control.MActionListener.actionPerformed(MActionListener.java:
38)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour
ce)
        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.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(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)
Caused by: java.lang.ClassNotFoundException: javax.media.j3d.Canvas3D
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        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)
        ... 37 more
```

Zeile bei der das Programm abstürzt: new View();

Aus dem Rest werde ich leider nicht schlau.


----------



## Thallius (26. Feb 2015)

Ich lese da eine ClassNotFound Execption. Da fehlt wohl Canvas3D im bundle.

Gruß

Claus


----------



## cree (26. Feb 2015)

Hab das ganze nochmal neu getestet mit der .jar Datei auf dem Desktop. Bekam die Fehlermeldung ausgegeben, dass meine j3dcore-ogl.dll im Ordner "C:\Windows" eine 32 Bit Datei sei und somit nicht auf 64 Bit laufe. Habe dann die 64 Bit Datei aus dem J3D Ordner in den Windows Ordner gezogen.

Um das ganze letztendlich "lauffähig" zu machen habe ich einen files Ordner angelegt, welcher die Bilder sowie diese Datei enthält. Beim Start des Programms wird die Methode copyFiles aufgerufen, welche die Datei in den Windowsordner verschiebt.

Danke für den Hinweis mit dem Stacktrace, wäre ich von alleine nicht drauf gekommen.


```
private void copyFiles() {
			 
			try {
			File sourceFile = new File("files/j3dcore-ogl.dll");
			File destFile = new File("C:/Windows/j3dcore-ogl.dll");
			sourceFile.renameTo(destFile);
			} catch (Exception e) {
			e.printStackTrace();
			}
			 
	}
```


----------



## Thallius (26. Feb 2015)

Naja ich würde mich bedanken wenn eine App mir meinen c:\Windows Ordner mit irgendwelchen Dateien vollmüllt. Mal davon abgesehen, dass damit deine App mit größter Wahrscheinlichkeit nur läuft wenn man als Admin angemeldet ist. Aber so genau kenne ich mich mit Windows nicht aus. Unter Linux und OSX läuft deine App so ja sowieso nicht

Gruß

Claus


----------

