Получение ошибки при выполнении некоторого кода для импорта X3D в Java
Я пытаюсь создать проект, который загружает файлы X3D в Java и для их отображения на Java, для этого я использую Xj3D, но когда я запускаю код, мне кажется, что я получаю сообщение об ошибке. Я скачал все банки, которые перечислены здесь. Я сделал библиотеку, которая называется 'Xj3D', и в свойствах проекта, в разделе библиотек я поместил библиотеку Xj3D, а в настройках виртуальной машины - -Xmx450M -Djava.library.path='C:\Users\matt\Downloads\xj3d-sai_2.0.0.jar'
и код, который я имею в Java:
package xj3dtest;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import static java.lang.Boolean.TRUE;
import javax.swing.JFrame;
import org.web3d.x3d.sai.Browser;
import org.web3d.x3d.sai.BrowserFactory;
import org.web3d.x3d.sai.X3DComponent;
import org.web3d.x3d.sai.X3DScene;
import java.util.HashMap;
public class Xj3DTest extends JFrame {
public Xj3DTest(String title) {
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Setup browser parameters
HashMap requestedParameters=new HashMap();
requestedParameters.put("Antialiased",TRUE);
requestedParameters.put("TextureQuality","MEDIUM");
requestedParameters.put("PrimitiveQuality","MEDIUM");
requestedParameters.put("Xj3D_InterfaceType","SWING");
requestedParameters.put("Xj3D_NavbarShown",TRUE);
requestedParameters.put("Xj3D_NavbarPosition","TOP");
requestedParameters.put("Xj3D_LocationShown",TRUE);
requestedParameters.put("Xj3D_LocationPosition","TOP");
requestedParameters.put("Xj3D_LocationReadOnly",TRUE);
requestedParameters.put("Xj3D_ShowConsole",TRUE);
requestedParameters.put("Xj3D_OpenButtonShown",TRUE);
requestedParameters.put("Xj3D_ReloadButtonShown",TRUE);
requestedParameters.put("Xj3D_StatusBarShown",TRUE);
requestedParameters.put("Xj3D_FPSShown",TRUE);
requestedParameters.put("Xj3D_ContentDirectory","CurrentDirectory");
requestedParameters.put("Xj3D_AntialiasingQuality","LOW");
requestedParameters.put("Xj3D_Culling_Mode", "frustum");
System.setProperty("x3d.sai.factory.class", "org.web3d.ogl.browser.X3DOGLBrowserFactoryImpl");
X3DComponent x3dComponent = BrowserFactory.createX3DComponent(requestedParameters);
Browser browser = x3dComponent.getBrowser();
Component browserComponent = (Component) x3dComponent.getImplementation();
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
cp.add(browserComponent, BorderLayout.CENTER);
X3DScene scene = browser.createX3DFromURL(new String[] {"test.x3dv"});
browser.replaceWorld(scene);
}
public static void main(String[] args) {
Xj3DTest frame = new Xj3DTest("Xj3D test");
frame.setSize(640, 480);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
И я положил файл test.x3dv в папку проекта. Код test.x3dv выглядит следующим образом:
#X3D V3.0 utf8
PROFILE Interactive
DEF TS TimeSensor {
cycleInterval 3
loop TRUE
}
DEF TG Transform {
rotation 0 1 0 0
children Shape {
geometry Box {}
appearance Appearance {
material DEF MAT Material {
diffuseColor 1 0 0
}
}
}
}
DEF OI OrientationInterpolator {
key [ 0 0.5 1 ]
keyValue [
0 1 0 0
0 1 0 3.14
0 1 0 6.28
]
}
ROUTE TS.fraction_changed TO OI.set_fraction
ROUTE OI.value_changed TO TG.rotation
Когда я нажимаю кнопку запуска в Netbeans, я получаю следующую ошибку времени выполнения:
No skin defined in xj3d-skin.properties
Producing default properties.
Exception in thread "main" java.lang.NoClassDefFoundError: org/j3d/aviatrix3d/DrawableSurface
at org.web3d.ogl.browser.X3DOGLBrowserFactoryImpl.createComponent(X3DOGLBrowserFactoryImpl.java:249)
at org.web3d.x3d.sai.BrowserFactory.createX3DComponent(BrowserFactory.java:252)
at xj3dtest.Xj3DTest.<init>(Xj3DTest.java:43)
at xj3dtest.Xj3DTest.main(Xj3DTest.java:59)
Caused by: java.lang.ClassNotFoundException: org.j3d.aviatrix3d.DrawableSurface
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 4 more