使用 IntelliJ 设置 JOGL 时出现异常

Exception while setting up JOGL with IntelliJ

这是我关于 Whosebug 的第一个问题,所以如果我不够具体,请原谅我,但我会尽力而为。 所以这是我的问题: 3 个小时以来,我一直在尝试使用 IntelliJ 设置 jogl。按照我的 OS 的 jogl 安装主页上的说明进行操作,IntelliJ 可以毫无问题地识别所有 OpenGL 类。正在读取源代码而没有错误,但问题是:当我尝试启动我的程序时出现此错误:

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: /tmp/jogamp_0000/file_cache/jln3160951728563156885/jln8316311171870168112/natives/linux-amd64/libnativewindow_awt.so: /usr/lib/jvm/java-13-oracle/lib/libjawt.so: version `SUNWprivate_1.1' not found (required by /tmp/jogamp_0000/file_cache/jln3160951728563156885/jln8316311171870168112/natives/linux-amd64/libnativewindow_awt.so)
    at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
    at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2440)
    at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2497)
    at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627)
    at java.base/java.lang.Runtime.load0(Runtime.java:744)
    at java.base/java.lang.System.load(System.java:1873)
    at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:603)
    at com.jogamp.common.jvm.JNILibLoaderBase.access[=10=]0(JNILibLoaderBase.java:63)
    at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:106)
    at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:487)
    at jogamp.nativewindow.NWJNILibLoader.access[=10=]0(NWJNILibLoader.java:39)
    at jogamp.nativewindow.NWJNILibLoader.run(NWJNILibLoader.java:49)
    at jogamp.nativewindow.NWJNILibLoader.run(NWJNILibLoader.java:41)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:312)
    at jogamp.nativewindow.NWJNILibLoader.loadNativeWindow(NWJNILibLoader.java:41)
    at jogamp.nativewindow.jawt.JAWTUtil.<clinit>(JAWTUtil.java:336)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:416)
    at com.jogamp.nativewindow.NativeWindowFactory.run(NativeWindowFactory.java:344)
    at com.jogamp.nativewindow.NativeWindowFactory.run(NativeWindowFactory.java:340)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:312)
    at com.jogamp.nativewindow.NativeWindowFactory.initSingleton(NativeWindowFactory.java:340)
    at com.jogamp.opengl.GLProfile.initProfilesForDefaultDevices(GLProfile.java:1721)
    at com.jogamp.opengl.GLProfile.access[=10=]0(GLProfile.java:80)
    at com.jogamp.opengl.GLProfile.run(GLProfile.java:230)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:312)
    at com.jogamp.opengl.GLProfile.initSingleton(GLProfile.java:216)
    at com.jogamp.opengl.GLProfile.getProfileMap(GLProfile.java:2297)
    at com.jogamp.opengl.GLProfile.get(GLProfile.java:988)
    at com.jogamp.opengl.GLProfile.getDefault(GLProfile.java:722)
    at com.jogamp.opengl.GLProfile.getDefault(GLProfile.java:733)
    at PongGame.run(Pong3DTex.java:217)
    at Pong3DTex.run(Pong3DTex.java:1028)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
    at java.desktop/java.awt.EventQueue.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)'"

我完全不知道发生了什么,为什么会这样,'SUNWprivate_1.1' 应该是什么。异常所指的行说:GLProfile glp = GLProfile.getDefault(); 这实际上就像我代码中执行的第一行。

这一切都发生在我的笔记本电脑 运行 最新版本的 elementaryOS 上,我对 Linux 还很陌生,所以我对 atm 完全不知所措。在 Windows 上,当我告诉 IntelliJ jogl 的 jar 文件夹的路径时,一切正常。

所以我真的希望你们能帮助我,因为我已经到了智慧的尽头。感谢您的每一个回答。

好的。于是研究了6个小时,一遍又一遍重装java/jogl发现了问题:我用的是oraclejdk13,好像和linux上的jogl不兼容所以我卸载了 jdk13 并下载了 open jdk 11。仍然没有麦芽汁,但我收到一条不同的异常消息。扔掉 open jdk 11 并安装 open jdk 8 而不是 et voila -> 它终于工作了。 8小时我不得不浪费在这样的废话上学习。为什么东西不能只在 linux 上工作?为什么总有一些隐藏的废话阻止你做你需要做的事情? – CaptainIceBl0ck 24 分钟前