如何解决“检测到不一致:dl-lookup.c:111”(Java结果127)错误?

时间:2019-04-25 10:45:39

标签: java linux maven ubuntu-18.04

我目前正在尝试使用Maven为我正在开发的游戏构建Java项目。

另一位用户最近推送到我们的存储库已经破坏了我的构建,但没有破坏其他用户。

在最近的构建中,未对Pom.xml进行任何更改,并且我的Java环境保持一致。

我在Ubuntu 18.04 LTS发行版上使用Java 8 OpenJDK(1.8.0_211)。

maven存储库能够成功编译,但是当我尝试使用预定的(mvn Integration-test -Pdesktop)构建执行代码时,会收到“构建成功”,一些错误并且没有启动应用程序。

我看过Linux论坛,但是找不到类似的案例。

正常的Maven调试选项尚未提供我认识到的问题的任何初始指示。

我看了几个Stack Overflow问题,包括 debugging ld, "Inconsistency detected by ld.so",但不确定从何处着手提出建议的方法,以及对于我的情况是否可行。

我看过Java错误代码127,它表明在我的CLASSPATH上找不到资源。这是正确的吗?如何确定似乎成功的构建中缺少的资源?

错误如下。

 [java] Inconsistency detected by ld.so: dl-lookup.c: 111: check_match: Assertion `version->filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!
[java] Java Result: 127

成功后,我希望该版本能够报告成功并启动游戏。在失败时,我原以为构建会报告失败,但是相反,我看到在没有启动LibGDX应用程序的情况下构建成功。

该构建当前正在为其他平台上的用户运行。

3 个答案:

答案 0 :(得分:4)

将 libGDX 从 lwjgl 切换到 lwjgl3

我在使用 OpenJDK 11 / Java 11 (openjdk 11.0.10 2021-01-19) 时遇到了与您相同的问题。修复它的原因是到处都切换到 lwjgl3,这顺便说一下,这也为我解决了一些其他问题! (退出应用程序时整个屏幕变黑,鼠标光标捕获仅部分工作等)

build.gradle 中将第一个块更改为第二个块:

api "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
api "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion"

还要调整您的导入(例如在 DesktopLauncher 类中):

import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;

lwjgl3 应该几乎完全兼容,就我而言,我只需要更新配置:

LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
config.samples = 8;
config.height = 720;
config.width = 1280;
config.vSyncEnabled = true;
new LwjglApplication(new RangeAnxietyGame(), config);
Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
config.setBackBufferConfig(8, 8, 8, 8, 16, 0, 8);
config.setWindowedMode(1280, 720);
config.useVsync(true);
new Lwjgl3Application(new RangeAnxietyGame(), config);

答案 1 :(得分:2)

降级到OpenJDK 8

我在带有Eclipse 2018-12(4.10.0)的Xubuntu 18.04中遇到了相同的问题。它工作正常,但可能是系统中的某些更新(或专门针对OpenJDK的更新)引发了此问题。此外,Gradle任务没有显示在Gradle窗口中。

我解决了删除软件包的问题:default-jre,default-jdk,default-jre-headless,default-jdk-headless,所有这些都“指向” openjdk-11。

然后我安装了软件包:openjdk-8-jre,openjdk-8-jdk,openjdk-8-jre-headless和openjdk-8-jdk-headless。

将vm部分中的eclipse.ini更改为: -vm / usr / lib / jvm / java-8-openjdk-amd64 / bin

现在一切正常,并且Gradle任务再次显示。为了澄清,我也使用LibGDX。

答案 2 :(得分:1)

在具有openjdk-11的Ubuntu 20.04上使用libgdx时,也出现了这个问题。

经过长时间的斗争,我尝试了另一家jdk供应商,而不是openjdk。这解决了我的问题。出于某种原因,采用open-opendjk-11起作用,而openjdk-11不起作用。