gpt4 book ai didi

java - 通过命令行jdb运行java程序执行正确,但作为java命令行执行时失败

转载 作者:行者123 更新时间:2023-12-02 01:30:48 25 4
gpt4 key购买 nike

我在 Java 方面相对缺乏经验,因此希望我能够在这里提供足够的信息,使其对其他人有意义且有用。

我正在尝试运行别人的代码库,该代码库需要两个输入文件,在通过它们运行代码时将一些信息打印到 STDOUT,然后退出。

我使用如下命令编译了代码:

java -g -cp .:../../deps/dep1.jar:../../deps/dep2.jar:../../deps/dep3.jar nameofclass/Nameofclass.java nameofclass/File1.java nameofclass/File2.java nameofclass/File3.java

然后我可以使用 jdb 执行,如下所示:

jdb -classpath ".:../../deps/dep1.jar:../../deps/dep2.jar:../../deps/dep3.jar:" nameofclass.Nameofclass file1.ext file2.ext

然后在jdb中:

run nameofclass.Nameofclass file1.ext file2.ext

当我这样做时,在 jdb 中,我会打印出正确运行代码的进程,并以 The application exited:

结束
Set uncaught java.langh.Throwable
Set deferred uncaught java.langh.Throwable
>
VM Started: /path/to/src

<print out of the code running correctly>

The application exited

到目前为止,一切都很好。当我尝试使用 java 而不是 jdb 运行相同的代码时,我得到:

java -cp ".:../../deps/dep1.jar:../../deps/dep2.jar:../../deps/dep3.jar:" nameofclass.Nameofclass file1.ext file2.ext

Exception in thread "main" java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: java/lang/invoke/StringConcatFactory

跟踪指向主函数最开始处的一行代码,这似乎在 jdb 上运行没有任何问题。

有什么想法如何运行我可以使用 jdb 成功运行但只需在命令行上使用 java 运行的代码吗?

最佳答案

事实证明,StringFactory 错误表明我的 Java 安装在 Ubuntu 16.04 中失败了,jdb 运行 Java 9,但 java 指向 /usr/bin/java 版本比那个旧得多。我纠正了这个问题:

https://askubuntu.com/questions/176121/dpkg-error-trying-to-overwrite-file-which-is-also-in

最后运行:

sudo update-alternatives --config java

完成此操作后,运行与 jdb 类似的 java 即可工作。

关于java - 通过命令行jdb运行java程序执行正确,但作为java命令行执行时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57554875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com