【问题标题】:How to make jogl work with intellij idea如何使 jogl 与 intellij idea 一起工作
【发布时间】:2013-04-14 02:30:46
【问题描述】:

我环顾四周,似乎无法弄清楚这一点。我正在尝试设置 JOGL(在 win64 上)以与 IntelliJ IDEA 一起使用,无论我做什么,它似乎都不起作用。这是我到目前为止所做的:

  1. 已下载this
  2. 将所有这些文件移动到它们自己的文件夹中(称为 JOGL):
    • gluegen-rt.jar
    • jogl-all.jar
    • gluegen-java-src.zip
    • jogl-java-src.zip
    • gluegen-rt.dll
    • jogl_desktop.dll
    • nativewindow_awt.dll
    • nativewindow_win32.dll
    • newt.dll
  3. 进入项目结构并将 JOGL 文件夹作为库添加到模块中
  4. 尝试运行带有导入的模块:添加了import net.java.games.jogl.*;

我还尝试在不使用导入的情况下运行代码行System.loadLibrary("jogl");,但没有成功。任何帮助表示赞赏。

这些是我关注的指南:

编辑:

根据 CrazyCoder 的要求,当我尝试使用我提到的 import net.java.games.jogl.*; 进行编译时,我得到:

java: C:\....\Main.java:2: package net.java.games.jogl does not exist


当我删除导入并尝试在插入 System.loadLibrary("jogl"); 行的情况下运行它时,我得到:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jogl in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at core.Main.main(Main.java:15)

奇怪的是,当我尝试在命令行上使用命令java -cp "/cygdrive/c/apps/JOGL/" core.Main 运行它时,我得到:

java.lang.NoClassDefFoundError: core/Main
Caused by: java.lang.ClassNotFoundException: core.Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: core.Main.  Program will exit.
Exception in thread "main"

如果我不使用 -cp "/cygdrive/c/apps/JOGL/" 运行它,它可以正常工作(如实际运行并给我与 IDE 相同的结果,但也会以相同的方式失败)。


下面是我的模块依赖的截图(JOGL就是我上面提到的):

我尝试将所有内容分开以使其更具可读性,如果难以理解,请见谅。

【问题讨论】:

  • 使用您遇到的实际错误编辑帖子。它编译吗?运行时会失败吗?有什么错误?附上dependencies configuration的截图。

标签: java intellij-idea jogl


【解决方案1】:

如果您使用的是 IDEA,那么将其作为一个 maven 项目来做是有意义的,因为 IDEA 有很好的 maven 支持。只需将依赖项粘贴到您的 pom.xml 中即可,它们可从 maven Central 获得:

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

  <dependency>
    <groupId>org.jogamp.jocl</groupId>
    <artifactId>jocl</artifactId>
    <version>2.0.2</version>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jocl</groupId>
    <artifactId>jocl-main</artifactId>
    <version>2.0.2</version>
  </dependency>

  <!-- audio -->
  <dependency>
    <groupId>org.jogamp.joal</groupId>
    <artifactId>joal</artifactId>
    <version>2.0.2</version>
  </dependency>
</dependencies>

这是我在玩 JOGL 时使用的,它很管用。

【讨论】:

  • 这还能用吗?我现在正在尝试,它似乎不起作用。你确定这是你需要做的所有事情吗?
  • 现在有更新的版本,但基本上是的。您需要确定您需要哪些依赖项(当然是前 2 个),然后与任何 maven 项目一样,将它们添加进去并让 maven 下载它们。 jogamp.org/wiki/index.php/Maven
【解决方案2】:

只需将jogl-all.jar 和gluegen-rt.jar 放入您的类路径,并将包含本机库的JAR 放入同一目录中。 net.java.games.jogl 来自 JOGL JSR 231(一个非常旧的版本),在您下载 JOGL 2 时不再维护它。调整您的代码以使其与 JOGL 2 一起使用。

编辑:现在您可以使用单个 JAR,jogamp-far.jar。只需将其放入您的类路径中即可。这要容易得多。 The instructions are in our wiki.

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 2013-08-09
    • 2019-02-22
    • 1970-01-01
    相关资源
    最近更新 更多