Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

01.12.2005, 21:43

[gelöst] Java3d gibt Ausnahme-Fehler

Hi,
ich habe auf meinem alten System (SuSE) Programme mit Java3d geschrieben, die auch gut unter Windows liefen. Leider habe ich jetzt Probleme dir unter meinem jetztigen Gentoo zum Laufen zu bekommen :-(
Wenn ich nun ein Programm starte, bekomme ich folgende Ausnahme:

Quellcode

1
Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/j3d/Node

Je nach Programm steht statt "Node" auch "Geometry" oder andere Elemente aus dem Java3D-Scene-Graph.
Ich habe sowohl blackdown-java3d-bin als auch sun-java3d-bin gemerged. Aber es kommen immer die gleichen Fehler :-(
Auch eine manuelle Installation hat nichts gebracht.

An java habe ich das aktuelle aus partage 1.4.2_09.
Java3d ist 1.3.2

Worin liegt eigentlich der Unterschied zwischen blackdown und sun?
Warum war sun maskiert?

Wie habt ihr java3d installiert und funktionieren eure Programme?

Wäre super, wenn man mir hier weiterhelfen könnte! Danke schonmal im Voraus!

PS: 3D-Software läuft eigentlich sonst relativ gut! 3D-Beschleunigung ist vorhanden!
83,4% aller Statistiken sind frei erfunden!

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Star.K« (07.12.2005, 15:19)


2

02.12.2005, 01:37

Mhh beim emergen gibt es einen etwas unverständlichen
Hinweis:

Quellcode

1
2
3
This ebuild installs into /opt/sun-java3d-bin and /usr/share/sun-java3d-bin
 * To use you need to pass the following to java
 * -Djava.library.path=$(java-config -i sun-java3d-bin) -cp $(java-config -p sun-java



spiel mal mit ` java-config ' etwas herum. schein bar muss du noch
irgendwie deiner sun-sdk-1.4 den pfad von sun-java3d bekannt machen

mit
java -Djava.library.path=$(java-config -i sun-java3d-bin) -cp $(java-config -p sun-sdk-1.4) MY (.class) geht auch nicht wirklick

was sagen Deine $CLASSPATH und $LIBRARY_PATH env _vars?


movimax

Gruß movimax

3

02.12.2005, 12:40

Hallöchen,

danke für die schnelle Antwort.
Leider bin ich nicht besonders weiter gekommen.
Wenn ich "java-config" oder "java -Djava.library.path=$(java-config -i sun-java3d-bin) -cp $(java-config -p sun-java3d-bin)"
Leider erhalte ich eine Fehlermeldung in Bezug auf java-config :-(

Quellcode

1
2
3
4
Traceback (most recent call last):
  File "/usr/bin/java-config", line 14, in ?
    from java_config import jc_options
ImportError: No module named java_config

Damit rumspielen klappt also leider nicht.

CLASSPATH sieht etwas einfach aus:

Quellcode

1
2
echo $CLASSPATH
.

Aber auch wenn ich CLASSPATH und LIBRARY_PATH um /usr/share/sun-java3d-bin/:/usr/share/sun-java3d-bin/lib/:/opt/sun-java3d-bin/lib/ erweitere, habe ich noch keinen Erfolg.
LIBRARY_PATH war übrigens vorher leer.
Ich habe vorsichtshalber mal die Pfade auch an LD_LIBRARY_PATH testweise gehängt, aber auch hier hat sich nichts verändert.

Wenn ich ein Java3d-Programm mir javac compiliere, erhalte ich folgende Fehler, die meiner Meinung allerdings nur besagen, dass java3d nicht gefunden wird:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Cube.java:7: package com.sun.j3d.utils.applet does not exist
    import com.sun.j3d.utils.applet.MainFrame;
                                    ^
Cube.java:8: package com.sun.j3d.utils.universe does not exist
    import com.sun.j3d.utils.universe.*;
    ^
Cube.java:10: package com.sun.j3d.utils.geometry does not exist
    import com.sun.j3d.utils.geometry.ColorCube;
                                      ^
Cube.java:11: package javax.media.j3d does not exist
    import javax.media.j3d.*;
    ^
Cube.java:12: package javax.vecmath does not exist
    import javax.vecmath.*;


Danke nochmal für die Hilfen!

PS: Ich kann manuell bzw mit der .bashrc und export meine env-vars immer ändern, aber wo stelle ich das für das ganze System ein? /etc/env.d/30java-finalclasspath habe ich angepasst, aber irgendwie scheint er die Änderung nicht zu wollen. Aber wahrscheinlich nach einem Neustart oder sowas. Aber dieses Problem ist ein kleineres, da ich erstmal mit export arbeiten kann
83,4% aller Statistiken sind frei erfunden!

4

02.12.2005, 12:54

Hast mal ein Beispiel Programm (also Quellcode)? Kannst mir ja mal schicken, dann werd ichs mir auch mal anschauen.
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

5

02.12.2005, 13:01

Füge mal zum CLASSPATH folgendes hinzu:
/usr/share/sun-java3d-bin/lib/vecmath.jar:/usr/share/sun-java3d-bin/lib/j3dutils.jar:/usr/share/sun-java3d-bin/lib/j3dcore.jar
und zu LIBRARY_PATH und LD_LIBRARY_PATH
/opt/sun-java3d-bin/lib

------------------

Hab mir im Netz jetzt ein paar so Beispiele runtergeladen und die liefen alle.

Kannst dass an deine "/etc/profile" anfügen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if [ "$CLASSPATH" = "" ] ; then
        CLASSPATH="/usr/share/sun-java3d-bin/lib/vecmath.jar:/usr/share/sun-java3d-bin/lib/j3dutils.jar:/usr/share/sun-java3d-bin/lib/j3dcore.jar"
else
        CLASSPATH="${CLASSPATH}:/usr/share/sun-java3d-bin/lib/vecmath.jar:/usr/share/sun-java3d-bin/lib/j3dutils.jar:/usr/share/sun-java3d-bin/lib/j3dcore.jar"
fi
export CLASSPATH

if [ "$LIBRARY_PATH" = "" ] ; then
        LIBRARY_PATH="/opt/sun-java3d-bin/lib"
else
        LIBRARY_PATH="${LIBRARY_PATH}:/opt/sun-java3d-bin/lib"
fi
export LIBRARY_PATH

if [ "$LD_LIBRARY_PATH" = "" ] ; then
        LD_LIBRARY_PATH="/opt/sun-java3d-bin/lib"
else
        LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/sun-java3d-bin/lib"
fi
export LD_LIBRARY_PATH


Die Fallunterscheidung mach ich deswegen, weil ich das was ich hier hinzufüge hinten und nicht vorne anstellen will und dann wenn die Umgebungsvariable nicht gesetzt ist, sie unschön mit einem ":" beginnen würde.

Ich denke mal, dass nun alles klappen sollte.
(So kann ich es wieder unmergen *g*)
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »maggu2810« (02.12.2005, 13:47)


6

02.12.2005, 14:22

DAAAAAANNNNNNNKKKKKKKEEEEEE

'S GEEEEEHHHHHHTTTTTTTTTT

Juhu!
Also waren meine Überlegungen gar nicht sooo dumm, wie ich befürchtet habe. Da hat ja fast nur noch .jar bei den Pfaden gefehlt. Da muss man erstmal draufkommen.

Also es geht jetzt! Danke!
Ich habe übrigens noch eine Datei gefunden, die mir hätte Aufschluss geben können, aber sowas findet man leider immer zu spät. In /usr/share/sun-java3d-bin/ liegt eine Datei namens package.env.
Deren Inhalt lautet.

Quellcode

1
2
3
DESCRIPTION=Sun Java3D API Core
CLASSPATH=/usr/share/sun-java3d-bin/lib/j3dcore.jar:/usr/share/sun-java3d-bin/lib/j3dutils.jar:/usr/share/sun-java3d-bin/lib/vecmath.jar
LIBRARY_PATH=/opt/sun-java3d-bin/lib

Interessanterweise steht dort aber nichts von LD_LIBRARY_PATH, was aber notwendig ist, um die Programme zu starten.

Wer ein kleines Java3D-Programm mal testen will, hier ein kleines Progrämmchen!

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
    import java.applet.Applet;
    import java.awt.BorderLayout;
    import java.awt.Frame;
    import java.awt.event.*;
    import com.sun.j3d.utils.applet.MainFrame;
    import com.sun.j3d.utils.universe.*;
    import java.awt.GraphicsConfiguration;
    import com.sun.j3d.utils.geometry.ColorCube;
    import javax.media.j3d.*;
    import javax.vecmath.*;

    public class Cube extends Applet{

    public Cube() {
    setLayout(new BorderLayout());
    GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
    canvas3D = new Canvas3D( config ); // Die Erstellung des Canvas3D Objektes
    add("Center", canvas3D);
    BranchGroup szene = macheSzene(); // content branch
    szene.compile();
    universe = new SimpleUniverse( canvas3D ); // Erstellung des SimleUniverse
    universe.getViewingPlatform().setNominalViewingTransform();
    universe.addBranchGraph(szene); // Einf\uffff\uffffgen des content branch ins SimpleUniverse
    }

    /**
    * Erstellt den Szenegraphen
    * @return BranchGroup
    */
    public BranchGroup macheSzene(){
    BranchGroup objWurzel = new BranchGroup();
    // Transformation, 2 Rotationen:
    Transform3D drehung = new Transform3D();
    Transform3D drehung2 = new Transform3D();
    drehung.rotX(Math.PI / 4.0d);
    drehung2.rotY(Math.PI / 5.0d);
    drehung.mul(drehung2);
    TransformGroup objDreh =
    new TransformGroup(drehung);
    // Erstellung des Farbw\uffff\uffffrfels
    objDreh.addChild(new ColorCube(0.4));
    objWurzel.addChild(objDreh);
    return objWurzel;
    }

    /**
    * gibt speicher frei
    */
    public void destroy(){
    universe.removeAllLocales();
    }

    public static void main(String[] args) {
    frame = new MainFrame(new Cube(),500,500);
    frame.setTitle("ColorCube");
    }

    //---- Attribute -----------------------
    private SimpleUniverse universe;
    private Canvas3D canvas3D;
    private static Frame frame;
    }
83,4% aller Statistiken sind frei erfunden!

7

07.12.2005, 15:23

Ich habe auf http://gentoo-wiki.com/Java_FAQ zufällig unten endeckt, dass man ein

Quellcode

1
python-updater
mal aufrufen sollte, wenn man Probleme mit java-config hat.
Wollte das hier nur mal erwähnen. Habe java3d ja inzwischen am Laufen, ist aber vielleicht ein Hinweis, der anderen etwas weiterhilft. Bei mir scheint auf jeden Fall java-config wieder zu funktionieren, habe aber noch nicht wirklich damit rumgespielt!
83,4% aller Statistiken sind frei erfunden!