java - 运行 Slick2D 导致 NoClassDefFoundError
问题描述
我尝试使用 Java 运行一个简单的游戏,并在尝试运行此应用程序时不断收到错误消息。
线程“main”中的异常 java.lang.NoClassDefFoundError: sun/misc/Unsafe ...
我认为我的问题是我的 JDK(12.0.2)不支持这些 Slick2D,因为它是“过时的”。如果降级我的 Java 版本是一种解决方案,有人可以解释我如何找到支持 Slick2D 的 Java 版本吗?
我已经在我的 IDE 中设置了我的库并设置了我的路径。我尝试在最新的 Intellij 和 eclipse 环境中运行相同的应用程序。我目前安装了 JDK 12.0.2 并安装了 2015 版的 LWJGL 和 Slick2D。
package classPackage;
import org.newdawn.slick.*;
public class Game extends BasicGame{
public Game(String gamename) {
super(gamename);
}
@Override
public void init(GameContainer gc) throws SlickException {
}
@Override
public void update(GameContainer gc, int i) throws SlickException {
}
@Override
public void render(GameContainer gc, Graphics g) throws SlickException {
g.drawString("Howdy!", 10, 10);
}
public static void main(String[] args) {
try {
AppGameContainer appgc;
appgc = new AppGameContainer(new Game("Simple Slick Game"));
appgc.setDisplayMode(640, 480, false);
appgc.start();
} catch (SlickException ex) {
}
}
}
错误:
Exception in thread "main" java.lang.NoClassDefFoundError: sun/misc/Unsafe
at lwjgl/org.lwjgl.MemoryUtilSun$AccessorUnsafe.getUnsafeInstance(MemoryUtilSun.java:74)
at lwjgl/org.lwjgl.MemoryUtilSun$AccessorUnsafe.<init>(MemoryUtilSun.java:62)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:166)
at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:404)
at java.base/java.lang.Class.newInstance(Class.java:590)
at lwjgl/org.lwjgl.MemoryUtil.loadAccessor(MemoryUtil.java:375)
at lwjgl/org.lwjgl.MemoryUtil.<clinit>(MemoryUtil.java:63)
at lwjgl/org.lwjgl.opengl.WindowsDisplay.setTitle(WindowsDisplay.java:522)
at lwjgl/org.lwjgl.opengl.Display.setTitle(Display.java:541)
at lwjgl/org.lwjgl.opengl.Display.createWindow(Display.java:312)
at lwjgl/org.lwjgl.opengl.Display.create(Display.java:848)
at lwjgl/org.lwjgl.opengl.Display.create(Display.java:757)
at slick/org.newdawn.slick.AppGameContainer.tryCreateDisplay(AppGameContainer.java:302)
at slick/org.newdawn.slick.AppGameContainer.access$000(AppGameContainer.java:34)
at slick/org.newdawn.slick.AppGameContainer$2.run(AppGameContainer.java:353)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:310)
at slick/org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:348)
at slick/org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:317)
at testGame/classPackage.Game.main(Game.java:31)
Caused by: java.lang.ClassNotFoundException: sun.misc.Unsafe
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 23 more
解决方案
我能够通过将我的 jdk 降级到 8 来解决这个问题。谢谢大家,我希望这对将来的某人有所帮助。
推荐阅读
- symfony - Safari - 由于访问控制检查,XMLHttpRequest 无法加载 X。[检查员]
- go - 不同的结构重用相同的方法
- node.js - Node JS 注销功能显示错误:`onWebTokenError: jwt malformed`
- locking - 当我们向其中添加列时,HANA 会锁定整个表吗?
- c# - 如何使用 c# 在 azure 表存储中查找 2 dateTime 之间的小时数
- java - 从具有高效时间复杂度的文件中搜索记录。文件有 10 亿条记录。带键值对
- spring-boot - Spring Boot Security - 证书 - 如果无效则拒绝连接
- c# - 如何在 C# 中读取 SSIS 包组件内部的绑定
- excel - 您可以使用逻辑应用将共享点上的 excel 文件中的数据插入 sql azure db 吗?
- azure - Azure 机器学习中的终结点不可使用