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

标签 java jdb

我在 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/

相关文章:

java - Scala - super 的中缀运算符不能称为中缀

java - 如何在我的登录和注册页面更改密码?

java - 如何编写 Java 调试器命令行工具 (jdb) 的脚本?

java - 获取 org.dom4j.DocumentException : feature read only while deploying war file in tomcat of linux 异常

java - 通用多维数组转换函数

java - Spring-Data 从 Controller 调用实体上的保存

java - 调用重载main方法

java - 使用 jdb : "Error: impossible to find or load the main class" 在 java 中进行调试

java - net.ucanaccess.jdbc.UcanaccessSQLException : attempt to assign to non-updatable column

java - jdb-无法找到或加载主类 Main