【问题标题】:JOGL 2.3.2 example compiles but fails to run (Maven in NetBeans 12.4)JOGL 2.3.2 示例编译但无法运行(NetBeans 12.4 中的 Maven)
【发布时间】:2021-11-02 14:22:47
【问题描述】:

在 Lubuntu 21.10 和 OpenJDK 16.0.2(64 位)和 Maven 3.8.2 上,我想尝试学习 OpenGLJOGLhttps://jogamp.org/jogl/www/

从这里https://jogamp.org/deployment/jogamp-current/archive/ 我得到了jogamp-fat-all.7z,因为只有一个 jar 文件更容易开始。

作为第一个示例,我想从这里尝试https://github.com/jvm-graphics-labs/hello-triangle https://github.com/jvm-graphics-labs/hello-triangle/blob/master/src/main/java/gl4/HelloTriangleSimple.java

我在NetBeans 12.4 中创建了一个Java with Maven 项目。我在网上找到了一个提示如何将本地 jar 文件添加到 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>JOGLfirst</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>16</maven.compiler.source>
        <maven.compiler.target>16</maven.compiler.target>
    </properties>
   
    <dependencies>
        <dependency>
            <groupId>org.jogamp</groupId>
            <artifactId>jogamp-fat</artifactId>
            <version>2.3.2</version>
            <scope>system</scope>
            <systemPath>${basedir}/LIBs/jogamp-fat.jar</systemPath>
        </dependency>
    </dependencies>
</project>

我在我的项目根文件夹中创建了一个文件夹 LIBs 并将 jogamp-fat.jar 复制到该文件夹​​中,这可以在我的 pom.xml 如何将其添加为依赖项中看到。

我的项目结构是

JOGLfirst
   LIBs
      jogamp-fat.jar
   src/main/java/com/mycompany
      framework
         Semantic.java
      HelloTriangleSimple.java

项目编译,但是当我在HelloTraingleSimple.java 上选择Run File 时,出现以下错误:

cd /home/me/NetBeansProjects/JOGLfirst; JAVA_HOME=/home/me/PROGRAMs/openjdk-16.0.2 M2_HOME=/home/me/PROGRAMs/apache-maven-3.8.2 /home/me/PROGRAMs/apache-maven-3.8.2/bin/mvn -Dexec.vmArgs= "-Dexec.args=${exec.vmArgs} -classpath %classpath ${exec.mainClass} ${exec.appArgs}" -Dexec.executable=/home/me/PROGRAMs/openjdk-16.0.2/bin/java -Dexec.mainClass=com.mycompany.HelloTriangleSimple -Dexec.classpathScope=runtime -DskipTests=true -Dexec.appArgs= org.codehaus.mojo:exec-maven-plugin:3.0.0:exec
Running NetBeans Compile On Save execution. Phase execution is skipped and output directories of dependency projects (with Compile on Save turned on) will be used instead of their jar artifacts.
Scanning for projects...

Some problems were encountered while building the effective model for com.mycompany:JOGLfirst:jar:1.0-SNAPSHOT
'dependencies.dependency.systemPath' for org.jogamp:jogamp-fat:jar should not point at files within the project directory, ${basedir}/LIBs/jogamp-fat.jar will be unresolvable by dependent projects @ line 20, column 25

It is highly recommended to fix these problems because they threaten the stability of your build.

For this reason, future Maven versions might no longer support building such malformed projects.


    ----------------------< com.mycompany:JOGLfirst >-----------------------
    Building JOGLfirst 1.0-SNAPSHOT
    --------------------------------[ jar ]---------------------------------
    
    --- exec-maven-plugin:3.0.0:exec (default-cli) @ JOGLfirst ---
    Error: Could not find or load main class com.mycompany.HelloTriangleSimple
    Caused by: java.lang.NoClassDefFoundError: com/jogamp/opengl/GLEventListener
    Command execution failed.
    org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
        at org.apache.commons.exec.DefaultExecutor.executeInternal (DefaultExecutor.java:404)
        at org.apache.commons.exec.DefaultExecutor.execute (DefaultExecutor.java:166)
        at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:982)
        at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:929)
        at org.codehaus.mojo.exec.ExecMojo.execute (ExecMojo.java:457)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:78)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:567)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    ------------------------------------------------------------------------
    BUILD FAILURE
    ------------------------------------------------------------------------
    Total time:  1.022 s
    Finished at: 2021-09-04T21:45:47+02:00
    ------------------------------------------------------------------------
    Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (default-cli) on project JOGLfirst: Command execution failed.: Process exited with an error: 1 (Exit value: 1) -> [Help 1]
    
    To see the full stack trace of the errors, re-run Maven with the -e switch.
    Re-run Maven using the -X switch to enable full debug logging.
    
    For more information about the errors and possible solutions, please read the following articles:
    [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

如何解决?

【问题讨论】:

  • 你写的是“框架”而不是“框架”。
  • 只是在撰写帖子时出错,抱歉。

标签: java netbeans maven-3 jogl


【解决方案1】:

请注意,您使用的示例不是官方 JogAmp 示例,可能会使用其他一些第三方库。

宁可这样做(it's explained in our wiki):

<dependencies>
    <dependency>
        <groupId>org.jogamp.gluegen</groupId>
        <artifactId>gluegen-rt-main</artifactId>
        <version>2.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.jogamp.jogl</groupId>
        <artifactId>jogl-all-main</artifactId>
        <version>2.3.2</version>
    </dependency>
</dependencies>

有一个更好的官方例子做类似here

我建议您在我们的官方 JogAmp 论坛上而不是在这里向 JOGL 提出具体问题,尤其是如果您希望得到快速回复。

【讨论】:

  • 好的,谢谢。将尝试,并在论坛上提问。只是一个简单的问题:下一个版本什么时候发布 2.4.0?
  • 我刚试过,但出现另一个错误。我使用 Maven 项目创建了一个新的 Java,并且只将两个给定的依赖项放入 pom.xml:/home/me/PROGRAMs/openjdk-16.0.2/lib/libjawt.so:未找到版本“SUNWprivate_1.1”(必需by /tmp/jogamp_0000/file_cache/jln6197218351352021716/jln3368270845480343845/natives/linux-amd64/libnativewindow_awt.so)我可以在这里关闭帖子并继续在 JogAmp 论坛。
猜你喜欢
  • 2020-08-13
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 2011-03-28
  • 2011-05-29
  • 1970-01-01
相关资源
最近更新 更多