当前位置: 首页 > 知识库问答 >
问题:

将JOGL包装到脂肪罐中

祁彬
2023-03-14

我在Java 8应用程序中使用了处理,它在IntelliJ上运行良好。Gradle导出所有平台的fat jar(下面的代码)打包依赖项后出现问题:

jar {
    baseName = applicationName
    version = actualVersion
    manifest { attributes 'Main-Class': mainClassName }
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

每当我试图打开扩展PApplet的窗口时,它都会引发以下异常:

通用域名格式。约甘普。opengl。GLException:配置文件[GL4bc、GL4、GL3bc、GL3、GLS3、GL2、GLS2]在设备窗口GraphicsDevice[type.windows、connection decon、unitID 0、handle 0x0、owner false、NullToolkitLock[obj 0x76dc78af]]上不可用。约甘普。opengl。GLProfile。在com上获取(GLProfile.java:1039)。约甘普。opengl。GLProfile。在com上获取(GLProfile.java:1050)。约甘普。opengl。GLProfile。getMaxProgrammable(GLProfile.java:826)用于处理。opengl。PSurfaceJOGL。处理时的initGL(PSurfaceJOGL.java:203)。opengl。PSurfaceJOGL。initFrame(PSurfaceJOGL.java:136)在处理时。果心帕普莱特。在处理时初始化表面(PApplet.java:10877)。果心帕普莱特。处理时运行草图(PApplet.java:10764)。果心帕普莱特。main(PApplet.java:10501)正在处理。果心帕普莱特。main(PApplet.java:10483)

这是我的依赖项

dependencies {
    compile 'org.processing:core:3.3.5'
    compile 'org.jogamp.jogl:jogl-all:2.3.2'
    compile 'org.jogamp.gluegen:gluegen-rt:2.3.2'
    testCompile 'org.json:json:20180130'
    compile files('libs/proscene.jar', 'libs/controlP5.jar')

    runtime "org.jogamp.gluegen:gluegen-rt:2.3.2:natives-macosx-universal"
    runtime "org.jogamp.gluegen:gluegen-rt:2.3.2:natives-windows-amd64"
    runtime "org.jogamp.gluegen:gluegen-rt:2.3.2:natives-windows-i586"

    runtime "org.jogamp.jogl:jogl-all:2.3.2:natives-macosx-universal"
    // runtime "org.jogamp.jogl:jogl-all:2.3.2:natives-solaris-i586"
    runtime "org.jogamp.jogl:jogl-all:2.3.2:natives-windows-amd64"
    runtime "org.jogamp.jogl:jogl-all:2.3.2:natives-windows-i586"

    testCompile('org.junit.jupiter:junit-jupiter-api:5.1.0',
            'org.junit.jupiter:junit-jupiter-params:5.1.0')
    testRuntime('org.junit.jupiter:junit-jupiter-engine:5.1.0',
            'org.junit.platform:junit-platform-launcher:1.1.0')
}

在processing和JOGL论坛上四处挖掘并没有多大帮助。我该怎么办?

P/S:一个奇怪的事情是,通过Eclipse导出脂肪罐会以某种方式使罐子中的慢跑可以运行。

共有1个答案

毛胜
2023-03-14

看来我找到了解决办法。我使用了shadow,它帮助将所有依赖项捆绑到一个可执行的胖jar中。现在JOGL很好用。

 类似资料:
  • 我将Gradle用于一个简单的Java项目,并希望生成一个fat JAR,其中还包含源代码。 我准备了一个示例存储库:https://github.com/szarnyasg/gradle-shadowjar-source.我尝试了这个配置: 我可以通过以下方式构建此功能: 这将在目录中生成两个JAR文件: -没有源的胖JAR -一个(仅)包含源的JAR Gradle Shadow插件的文档说明

  • 我使用JarSplice创建了一个胖jar文件,但是当我启动它时,我得到一个窗口(大小可以),它在半秒后关闭。。。 在“addjars”部分中,我添加了从Eclipse导出的jar文件,以及我正在使用的所有库jar。在本机部分,我只为lwjgl添加Windows本机。我想我写了正确的主类。 我做错了什么?我怎样才能解决这个问题? 注意:我使用的是最新版本的eclipse和jdk。

  • 我正在用Spring Boot,Jpa和MySQL连接器编写java控制台应用程序。我怎样才能轻松地排除所有不必要的脂肪从我的脂肪罐?

  • 我对Gradle和shadow jar(Maven的Shade插件的Gradle版本)是新手。我正在构建一个胖jar,我想在其中合并服务文件(这就是我首先使用shadowjar的原因)。根据文档,shadowJar任务继承自gradle Jar任务。因此,我们可以假设它将完全像jar任务一样工作。 下面是jar任务的片段: 结果,它产生了一个脂肪罐与所有的依赖关系爆炸,什么是预期的。当我将任务名称

  • 我知道不是一个有效的阶段,但我只是想说明我试图完成什么,即只有在提供选项时才构建fat jar的条件安装。

  • 为了优化Docker层,我尝试将我们的30M Spring Boot fat jar拆分为2M应用程序。jar和2800万libs。罐子 我可以使用爆炸模式,但我更喜欢使用2罐,因为它简化了一些事情,如部署,脚本等。 我的问题是,当我把lib分离出来时,我无法让启动器找到它们。无论是在jar模式还是爆炸模式(有两个dir)下,我都会 我在以下所有情况下都会得到这个: 知道我怎么才能让它工作吗?