3 Stimmen

Warum erhalte ich ClassNotFoundExpection, wenn ich die Klasse ordnungsgemäß importiert habe und sie in ihrem Verzeichnis angezeigt wird?

Dies ist meine Javac-Kompilieranweisung:

javac -cp " C:\java\code\j3D\j3dcore.jar ; C:\java\code\j3D\j3dutils.jar ; C:\java\code\j3D\vecmath.jar " Einfach.java

  • kompiliert ohne Probleme.

Die drei jar-Dateien ( j3dcore , j3dutils y vecmath ) sind die wesentlichen Gefäße für mein Programm (oder zumindest bin ich der Meinung, dass sie laut dieses offizielle Tutorial über J3D

Für das Protokoll habe ich diesen Code fast Zeile für Zeile aus der oben genannten PDF-Datei übernommen.

  • jar-Dateien befinden sich korrekt an den referenzierten Orten

Wenn ich meine Simple Programm, ( java Simple ) Ich werde begrüßt mit

Ausnahme im Thread "main" java.lang.NoClassDefFoundError: javax/media/j3d/Cavas3d Caused by: java.lang.ClassNotFoundExpection: javax.media.j3d.Canvas3D

Zurzeit starre ich direkt auf dieses Bild Canvas3D.class die sich innerhalb von j3dcore.jar\javax\media\j3d\

wtfisthis.jpg

Hier ist der Quellcode:

//First java3D Program
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 com.sun.j3d.utils.geometry.ColorCube;
import javax.media.j3d.*;
import javax.vecmath.*;
import java.awt.GraphicsConfiguration;

public class Simple extends Applet {
    public Simple() {
        setLayout(new BorderLayout());
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        Canvas3D canvas3D = new Canvas3D(config);
        add("Center", canvas3D);

        BranchGroup scene = createSceneGraph();
        scene.compile();

        // SimpleUniverse is a Convenience Utility class
        SimpleUniverse simpleU = new SimpleUniverse(canvas3D);

        // This moves the ViewPlatform back a bit so the
        // objects in the scene can be viewed.
        simpleU.getViewingPlatform().setNominalViewingTransform();

        simpleU.addBranchGraph(scene);
    }   // end of HelloJava3Da (constructor)
    public BranchGroup createSceneGraph() {
        // Create the root of the branch graph
        BranchGroup objRoot = new BranchGroup();

        // Create a simple shape leaf node, add it to the scene graph.
        // ColorCube is a Convenience Utility class
        objRoot.addChild(new ColorCube(0.4));

        return objRoot;
    }
    public static void main(String args[]){
        Simple world = new Simple();
    }
}
  1. Habe ich richtig importiert?
  2. Habe ich meine jar-Dateien in meiner Javac-Anweisung falsch referenziert?
  3. Wenn ich deutlich sehe Canvas3D in seinem richtigen Verzeichnis, warum findet Java es nicht?
  4. Der erste Ordner in beiden j3dcore.jar y vecmath.jar ist "javax". Ist der Compiler verwirrt?
  5. Wenn der Compiler verwirrt ist, wie kann ich angeben, wo genau die Klasse zu finden ist, wenn ich sie referenziere in meinem Quellcode?

4voto

akf Punkte 37387

Versuchen:

java -cp "C:\java\code\j3D\j3dcore.jar;C:\java\code\j3D\j3dutils.jar;C:\java\code\j3D\vecmath.jar"  Simple

müssen Sie den Klassenpfad in die Datei java Kommandozeile zu verwenden.

1voto

Santosh Punkte 17441

Einfach tun java simple wird nicht helfen. Sie müssen alle diese Jars in den Klassenpfad setzen, während Sie das Programm ausführen. Genau wie Sie es kompiliert haben.

java -cp C:\java\code\j3D\j3dcore.jar;C:\java\code\j3D\j3dutils.jar;C:\java\code\j3D\vecmath.jar Simple

Bitte prüfen Einstellung des Klassenpfads

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X