Как исправить ошибку Java 3d, которая не работает с jdk21?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как исправить ошибку Java 3d, которая не работает с jdk21?

Сообщение Anonymous »

У меня есть приложение Java 3d, которое раньше работало с jdk8, но теперь, после установки jdk21, оно больше не работает, вот так:

Код: Выделить всё

import com.sun.j3d.utils.picking.*;
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.geometry.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import java.awt.event.*;
import java.awt.*;

public class Java_3D_Pick extends MouseAdapter
{
private PickCanvas pickCanvas;

public Java_3D_Pick()
{
Frame frame=new Frame("Box and Sphere");
GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas=new Canvas3D(config);
canvas.setSize(400,400);
SimpleUniverse universe=new SimpleUniverse(canvas);
BranchGroup group=new BranchGroup();
// create a color cube
Vector3f vector=new Vector3f(-0.3f,0.0f,0.0f);
Transform3D transform=new Transform3D();
transform.setTranslation(vector);
TransformGroup transformGroup=new TransformGroup(transform);
ColorCube cube=new ColorCube(0.3);
transformGroup.addChild(cube);
group.addChild(transformGroup);
//create a sphere
Vector3f vector2=new Vector3f(+0.3f,0.0f,0.0f);
Transform3D transform2=new Transform3D();
transform2.setTranslation(vector2);
TransformGroup transformGroup2=new TransformGroup(transform2);
Appearance appearance=new Appearance();
appearance.setPolygonAttributes(new PolygonAttributes(PolygonAttributes.POLYGON_LINE,PolygonAttributes.CULL_BACK,0.0f));
Sphere sphere=new Sphere(0.3f,appearance);
transformGroup2.addChild(sphere);
group.addChild(transformGroup2);
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(group);

frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent winEvent) { System.exit(0); } });
frame.add(canvas);
pickCanvas=new PickCanvas(canvas,group);
pickCanvas.setMode(PickCanvas.BOUNDS);
canvas.addMouseListener(this);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public static void main(String[] args) { new Java_3D_Pick(); }

public void mouseClicked(MouseEvent e)
{
pickCanvas.setShapeLocation(e);
PickResult result=pickCanvas.pickClosest();

if (result==null) System.out.println("Nothing picked");
else
{
Primitive p=(Primitive)result.getNode(PickResult.PRIMITIVE);
Shape3D s=(Shape3D)result.getNode(PickResult.SHAPE3D);
if (p!=null) System.out.println(p.getClass().getName());
else if (s!=null) System.out.println(s.getClass().getName());
else System.out.println("null");
}
}
}
При использовании jdk1.6 или 8 мне нужно сделать следующее:
Чтобы запустить Java3D, скопируйте следующие файлы:[ j3dcore-ogl-cg.dll , j3dcore-ogl.dll , j3dcore-ogl-cg.dll , j3dcore-ogl-chk.dll ]
Из «C:\Program Files (x86)\ Java\Java3D\1.5.2\bin" в "C:\Program Files (x86)\Java\jdk1.6.0_31\jre\bin" и "C:\Program Files (x86)\Java\jdk1.6.0_26\ bin"
[ j3dcore.jar , j3dutils.jar , vecmath.jar ]
Из "C:\Program Files (x86)\Java\Java3D\1.5.2\lib \ext" на "C:\Program Files (x86)\Java\jdk1.6.0_26\lib\ext" и "C:\Program Files (x86)\Java\jdk1.6.0_26\jre\lib\ext"< /p>
Но эти шаги больше не работают, и некоторые каталоги больше не существуют в jdk 21.
Итак, когда я запустил его, я получил следующая ошибка:

Код: Выделить всё

Exception in thread "J3D-Renderer-1" java.lang.IllegalAccessError: class javax.media.j3d.Win32NativeConfigTemplate3D (in unnamed module @0x7d0f9eb3) cannot access class sun.awt.Win32GraphicsConfig (in module java.desktop) because module java.desktop does not export sun.awt to unnamed module @0x7d0f9eb3
at javax.media.j3d.Win32NativeConfigTemplate3D.getBestConfiguration(Win32NativeConfigTemplate3D.java:76)
at javax.media.j3d.NativePipeline.getBestConfiguration(NativePipeline.java:3335)
at javax.media.j3d.Renderer.doWork(Renderer.java:514)
at javax.media.j3d.J3dThread.run(J3dThread.java:275)
BUILD STOPPED (total time: 1 minute 36 seconds)
Интересно, знает ли кто-нибудь, как заставить это работать?

Подробнее здесь: https://stackoverflow.com/questions/790 ... with-jdk21
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»