【问题标题】:How do I troubleshoot "Inconsistency detected: dl-lookup.c: 111" (Java Result 127) error?如何解决“检测到不一致:dl-lookup.c:111”(Java 结果 127)错误?
【发布时间】:2019-04-25 10:45:38
【问题描述】:

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

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

相关问题 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

【问题讨论】:

标签: java linux maven libgdx ubuntu-18.04


【解决方案1】:

降级到 OpenJDK 8

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

我解决了删除包的问题:default-jredefault-jdkdefault-jre-headlessdefault-jdk-headless,它们都“指向”openjdk-11

然后我安装了包:openjdk-8-jreopenjdk-8-jdkopenjdk-8-jre-headlessopenjdk-8-jdk-headless

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

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

【讨论】:

    【解决方案2】:

    将 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);
    

    【讨论】:

    • 这解决了我的问题,谢谢。我猜是 libGDX 设置启动器本身,它使用 lwjgl 而不是 lwjgl3。知道为什么会这样吗?
    • 不知道为什么项目创建者选择了“错误”的库。在此站点上对 libGDX 专家进行 DM 操作后,我才得到尝试 lwjgl3 的提示!
    • 这个网站你的意思是stackoverflow,对吧?因为如果有其他网站可以找到 LibGDX 专家,我很想知道。即使您可以推荐任何与 LibGDX 相关的好网站或论坛,我们也将不胜感激。
    • 是的,我的意思是这样!
    【解决方案3】:

    openjdk-11 替换为adopt-openjdk-11

    我在 Ubuntu 20.04 和 openjdk-11 上使用 libgdx 时也出现了这个问题。

    经过更长时间的挣扎,我尝试了另一个 JDK 供应商而不是 openjdk。这解决了我的问题。出于某种原因,adopt-opendjk-11 有效,而 openjdk-11 无效。

    【讨论】:

    • 可以确认。我在 Ubuntu 18.04.4 LTS 上使用默认的 OpenJDK 包,使用名为 Jzy3d 的库时遇到了这个错误。完全卸载默认的OpenJDK并切换到这里分发的AdoptOpenJDK包后,错误解决:adoptopenjdk.net
    • 这是一个合适的解决方案。我也刚刚从 OpenJDK-11 切换到 AdoptOpenJDK-11,它修复了所有问题。如果您使用的是 linux,则可以安装采用 openjdk-11 作为替代方案:sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11.0.13+8/bin/java 100,然后在您可能需要的任何 jdk 之间切换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多