Java: 符号查找错误:/snap/core20/current/lib/x86_64-linux-gnu/libpthread.so.0:未定义符号:__libc_pthread_init,版本GLIBC_PRIVATE

7

我一直在开发一个Java项目,使用gui.jar文件导入一些类。一切都很正常,直到昨天。现在,我可以通过以下命令编译.class文件:

javac -d ./bin -sourcepath ./src -classpath ./bin/gui.jar src/simulation/TestSimulateur.javac

但是当我尝试使用以下命令执行程序时:

java -classpath bin:bin/gui.jar simulation.TestSimulateur

我遇到了以下错误:

java: symbol lookup error: /snap/core20/current/lib/x86_64-linux-gnu/libpthread.so.0: undefined symbol: __libc_pthread_init, version GLIBC_PRIVATE make: *** [Makefile:47: carte1] Error 127

我不太了解snap和库的工作原理,所以我不确定问题的根源。奇怪的是,这个问题只出现在我在VSCode上运行它时,而如果我在普通的Linux终端上运行它,则一切正常。

我已经搜索了很多,但找不到如何解决这个问题。正如我所说,我是Linux系统的新手。在我的尝试之间,我尝试重新安装VSCode,更新系统和更新snap软件包,但这些都没有起作用。

2个回答

17

虽然我已经在这里回答过了

问题出在VSCode Snap包的库配置上。它们设置了以下环境变量GTK_PATH,该变量被VSCode终端继承。

在VSCode终端中取消设置环境变量似乎对我有效。

unset GTK_PATH

作为一个稍微更加永久的解决方法,您也可以在VS Code用户设置中取消设置GTK_PATH,运行“首选项:打开用户设置(JSON)”并将以下内容添加到您的settings.json中:

    "terminal.integrated.env.linux": {
        "GTK_PATH": ""
    }

从VSCode终端中取消设置对我没有起作用。但是当我将它添加到launch.json中(如其他答案中所述),它就起作用了! - Reyno
你是否正在从VSCode UI启动调试/任务? - AmeyaVS
是的,用于调试和断点。基本上我使用F5(或运行>开始调试)。 - Reyno
1
@Reyno,你可以尝试在setting.json中将环境变量设置为空。这应该能够帮助解决问题。 - AmeyaVS
谢谢@AmeyaVS,这么简单的方法就解决了问题。虽然还是有很多警告,但至少可以编译了。您介意更清楚地说明错误来自哪里以及如何解决这个问题吗? - Leonardo Monteiro
1
@LeonardoMonteiro,这个 bug 的表现是 VSCode Snap Package 在 VSCode 脚本中指定了 GTK_PATH 环境变量,并在 VSCode 中继承到了终端进程中。你可以在这里找到相关的讨论。 - AmeyaVS

5

在最近的 Ubuntu 更新后,我也遇到了这个 bug。我认为这与 Snap 和 VS Code 有关。

一个简单的解决方案是卸载 Snap 中的 VS Code:

sudo snap remove code

然后,使用apt安装vscode,具体步骤请参考https://code.visualstudio.com/docs/setup/linux

sudo apt install ./<file>.deb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接