# Programm mit Java3D unter Linux laufen lassen



## frostbyte (5. Sep 2010)

Hallo,

ich hatte vor einiger Zeit mal ein Programm mit Hilfe von Java3D geschrieben. Das funktioniert auf dem Mac auch gut (unter Windows 7 meine ich auch), aber unter Linux läuft das nicht direkt.

Wenn ich es starte erscheint folgendes:

```
$ java -jar 100317-VanAllenGuertel.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/j3d/Canvas3D
	at de.***.physik.vanallenguertel.VanAllenGuertel.main(VanAllenGuertel.java:34)
Caused by: java.lang.ClassNotFoundException: javax.media.j3d.Canvas3D
	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
	... 1 more
```


Beim kompilieren unter Linux ist es auch nicht wirklich besser:


```
./Teilchen.java:7: package javax.media.j3d does not exist
import javax.media.j3d.Appearance;
                      ^
./Teilchen.java:8: package javax.media.j3d does not exist
import javax.media.j3d.BranchGroup;
                      ^
./Teilchen.java:9: package javax.media.j3d does not exist
import javax.media.j3d.ColoringAttributes;
                      ^
./Teilchen.java:10: package javax.media.j3d does not exist
import javax.media.j3d.GeometryArray;
                      ^
./Teilchen.java:11: package javax.media.j3d does not exist
import javax.media.j3d.LineStripArray;
                      ^
./Teilchen.java:12: package javax.media.j3d does not exist
import javax.media.j3d.Material;
                      ^
./Teilchen.java:13: package javax.media.j3d does not exist
import javax.media.j3d.Shape3D;
                      ^
./Teilchen.java:14: package javax.media.j3d does not exist
import javax.media.j3d.Transform3D;
                      ^
./Teilchen.java:15: package javax.media.j3d does not exist
import javax.media.j3d.TransformGroup;
                      ^
./Teilchen.java:16: package javax.vecmath does not exist
import javax.vecmath.Color3f;
                    ^
./Teilchen.java:17: package javax.vecmath does not exist
import javax.vecmath.Point3f;
                    ^
./Teilchen.java:18: package javax.vecmath does not exist
import javax.vecmath.Vector3f;
                    ^
./Teilchen.java:20: package com.sun.j3d.utils.geometry does not exist
import com.sun.j3d.utils.geometry.Sphere;
                                 ^
```



Wie kann ich das so hinbekommen, dass man sich einfach nur die JAR Datei herunterlädt und das Programm direkt unter Windows, Mac OS X sowie Linux (Ubuntu z. B.) mit einer ganz normalen Java Installation funktioniert?


Danke,

frostbyte


----------



## noobadix (5. Sep 2010)

Wird denn das original Java verwendet oder die open-source-alternative?


----------



## frostbyte (5. Sep 2010)

Ich habe gerade openjdk-6-jdk installiert, das wird dann wohl die quelloffene Variante sein. Muss ich das andere, geschlossene nehmen? Welches wäre das?


----------



## stareagle (5. Sep 2010)

Hallo,



> [Ich habe gerade openjdk-6-jdk installiert, das wird dann wohl die quelloffene Variante sein. Muss ich das andere, geschlossene nehmen? Welches wäre das?



Das Package mit dem Sun/Oracle hat üblicherweise sun im Namen. Bei Debian heißt das Package z.B. sun-java6-jdk. Einige Distribution haben auch gar kein closed Source JDK mehr in den offiziellen Repositories. 

Zum Teil scheint auch so zu sein, dass die Java 3D-API nicht Teil des JDK-Packages ist, sondern ein separat zu installierendes Package. Bei Ubuntu heißt das Package z.B.  libjava3d-java.

Gruß

Stareagle


----------

