Ошибка Java3D: Java.Lang.NoClassDefFoundError

Это код в Java 3D:

import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import javafx.scene.transform.Transform;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Vector3f;

class Esercizio3dot1 extends Applet {

    public Esercizio3dot1() {

        setLayout(new BorderLayout());
        Transform3D t = new Transform3D();
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        Canvas3D canvas = new Canvas3D(config);        
        add("Center", canvas);
        BranchGroup scene = CreateSceneGraph();
        scene.compile();
        SimpleUniverse universe = new SimpleUniverse(canvas);

        universe.getViewingPlatform().setNominalViewingTransform();
        universe.addBranchGraph(scene);

    }

    public BranchGroup CreateSceneGraph() {

        BranchGroup bg = new BranchGroup();
        TransformGroup tg = CreateSubGraph();
        bg.addChild(tg);
        return bg;
    }

    public TransformGroup CreateSubGraph() {

        TransformGroup tg = new TransformGroup();
        tg.addChild(new ColorCube(0.3));
        return tg;

    }

    public static void main(String[] args) {
        System.setProperty("sun.awt.noerasebackground", "true");
        new MainFrame(new Esercizio3dot1(), 300, 300);

    }

}

Код скомпилирован правильно, но когда я запускаю консоль, я выдаю ошибку (изображение), как я могу ее решить?

ошибка

Я установил последнюю версию 3d java, но ситуация не изменилась, ошибка отображается одинаково.

1 ответ

Сначала Java3D и JavaFX 3D - это две разные и несовместимые библиотеки, поэтому вы должны удалить import javafx.scene.transform.Transform;,

Во-вторых, нет необходимости "устанавливать" Java3D, это библиотека Java, состоящая из JAR-файлов, и эти JAR-файлы должны быть в вашем пути к классам, как для большинства сторонних библиотек Java. Я советую вам прочитать мой очень подробный учебник, он объясняет, как использовать Java3D 1.6.0 и 1.7.0.

Ваш исходный код совместим с Java3D 1.6.0, но не с Java3D 1.7.0, так как пакеты были переименованы в этой версии, поскольку они не находятся под контролем Oracle (тогда он не может использовать термин "javax").

Другие вопросы по тегам