首页 > 解决方案 > 使用 IntelliJ 设置 JOGL 时出现异常

问题描述

这是我关于stackoverflow的第一个问题,所以如果我不够具体,请原谅我,但我会尽力而为。所以这是我的问题: 3 个小时以来,我一直在尝试使用 IntelliJ 设置 jogl。按照我的操作系统的 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$000(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$000(NWJNILibLoader.java:39)
    at jogamp.nativewindow.NWJNILibLoader$1.run(NWJNILibLoader.java:49)
    at jogamp.nativewindow.NWJNILibLoader$1.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$3.run(NativeWindowFactory.java:344)
    at com.jogamp.nativewindow.NativeWindowFactory$3.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$000(GLProfile.java:80)
    at com.jogamp.opengl.GLProfile$1.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$1.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$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.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很陌生,所以我完全不知所措。在 Windows 上,当我告诉 IntelliJ jogl 的 jar 文件夹的路径时,一切正常,就是这样。

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

标签: javalinuxintellij-ideajogl

解决方案


好吧。所以经过6个小时的研究,一遍又一遍地重新安装java/jogl我发现了问题:我使用了oracle jdk13,它似乎与linux上的jogl不兼容,所以我卸载了jdk13并下载了open jdk 11。仍然没有作用,但我收到了不同的异常消息。扔掉 open jdk 11 并安装了 open jdk 8 等等瞧 - >它终于工作了。我不得不用 8 个小时来学习,浪费在这样的废话上。为什么东西不能在 linux 上运行?为什么总是有一些隐藏的 bs 阻止你做你需要做的事情?– CaptainIceBl0ck 24 分钟前


推荐阅读