【问题标题】:Trying to run libGDX with Maven and Eclipse尝试使用 Maven 和 Eclipse 运行 libGDX
【发布时间】:2020-08-06 17:44:28
【问题描述】:

也许是一个新手问题...

我一直在从事 LWJGL 项目,我使用 Maven 来管理依赖项。在其中,我想使用 libgdx 库的某些部分。所以我想在我将它添加到我的主项目之前,我会首先运行至少一个 helloworld 来使用它。

所以在我的 pom.xml 我有这个:

        <!-- https://mvnrepository.com/artifact/com.badlogicgames.gdx/gdx-backend-lwjgl -->
        <dependency>
            <groupId>com.badlogicgames.gdx</groupId>
            <artifactId>gdx-backend-lwjgl</artifactId>
            <version>1.9.11</version>
            <scope>test</scope>
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/com.badlogicgames.gdx/gdx-platform -->
        <dependency>
            <groupId>com.badlogicgames.gdx</groupId>
            <artifactId>gdx-platform</artifactId>
            <version>1.9.11</version>
            <scope>test</scope>
        </dependency>
                
        
        <!-- https://mvnrepository.com/artifact/com.badlogicgames.gdx/gdx -->
        <dependency>
            <groupId>com.badlogicgames.gdx</groupId>
            <artifactId>gdx</artifactId>
            <version>1.9.11</version>
        </dependency>

该文件的其他内容与工作项目中的相同,并且 100% 工作。

在此之前我尝试创建一个单独的 libgdx 项目,但......它没有工作。但是,我看到应该运行该程序的代码是:

public static void main (String[] arg) {
        LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
        new LwjglApplication(new SomeApplicationListenerFile(), config);
    }

所以我在我的 maven 项目中使用了它。 当我“作为 Java 应用程序运行”时,错误如下:

Exception in thread "main" java.lang.NoClassDefFoundError: com/badlogic/gdx/backends/lwjgl/LwjglApplicationConfiguration
    at org.boby.RayTracing.main.Main.main(Main.java:179)

如果我进行 Maven 构建,它会告诉我“com.badlogic.gdx.backends.lwjgl 包不存在”

我在“Maven 依赖项”文件夹中下载的 Maven jar 中查找了该软件包,并在 gdx-backend-lwjgl-1.9.11.jar 中找到了它 - 就在它应该在的位置。

包显然在那里,但 Java 找不到它。我该如何解决?

一些附加信息: Windows 10、日食氧、Maven 3.6.0、JRE 1.8.0_191、JDK 8

提前感谢您!我已经为此苦苦思考了好几个小时了。

编辑:我取得了一些进展。看起来“测试”把事情搞砸了,所以我删除了这些陈述。现在我收到以下错误:

Exception in thread "main" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load shared library 'gdx64.dll' for target: Windows 10, 64-bit
    at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:125)
    at com.badlogic.gdx.utils.GdxNativesLoader.load(GdxNativesLoader.java:33)
    at com.badlogic.gdx.backends.lwjgl.LwjglNativesLoader.load(LwjglNativesLoader.java:47)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.<init>(LwjglApplication.java:83)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.<init>(LwjglApplication.java:71)
    at org.boby.RayTracing.main.Main.main(Main.java:178)

看起来我需要在我的依赖项中包含 gdx-natives.jar,但我找不到它的 maven 存储库。

【问题讨论】:

    标签: java maven libgdx dependencies lwjgl


    【解决方案1】:

    我下载了 gdx-natives.jar(在论坛帖子中看到它)。在那里,有一个名为“gdx-64.dll”的文件。因为我需要“gdx64.dll”,所以我只是重命名了 dll,现在它运行了。

    【讨论】:

      【解决方案2】:

      如果您像这样定义 gdx-platform dep,则可以让 Maven 完成工作:

      <dependency>
                  <groupId>com.badlogicgames.gdx</groupId>
                  <artifactId>gdx-platform</artifactId>
                  <version>1.9.11</version>
                  <classifier>natives-desktop</classifier>
      </dependency>
      

      这将加载包括 gdx64.dll 在内的本地 jar,因此您不必在构建路径中向项目添加任何外部 jar。

      附带说明:如果您使用标准 Maven 存储库目录结构并使用 Gdx.files.internal("fileName") 语句加载资产,则需要在 main/repository 中定义一个与您的代码所在的包。(即 main/java/myPackage 与 /main/repository/myPackage 相关)。我对此有点挣扎,因为我通常不必在存储库目录中定义一个包文件夹。

      【讨论】:

        猜你喜欢
        • 2011-07-24
        • 1970-01-01
        • 2016-04-30
        • 2013-12-11
        • 1970-01-01
        • 1970-01-01
        • 2015-12-08
        • 2017-05-09
        • 2012-12-31
        相关资源
        最近更新 更多