【问题标题】:How to run java program with multiple jars and multiple classes with cmd or terminal?如何使用 cmd 或终端运行具有多个 jar 和多个类的 java 程序?
【发布时间】:2019-12-03 18:56:21
【问题描述】:

这是我迄今为止尝试编译的内容

javac -d bin -cp "lib/*" src/*.java

这似乎可以正确编译所有内容,问题出在我尝试运行时。 这是我试过的

cd bin
java -cp "lib/*" App <arguments>
java -cp "../lib/*" App <arguments>

或从根目录

java -cp "lib/*" bin/App

我尝试了多个在网上找到的建议,但没有一个有效。 我总是得到的错误是

ClassNotFoundException

有人可以帮我运行这个吗?

【问题讨论】:

  • 确保您的路径存在。似乎您正试图从第二个代码 sn-p 中的“bin”目录中访问“lib”目录,但不是第一个。

标签: java cmd javac


【解决方案1】:

你必须在你的类路径中包含 bin 目录。

如果您在 bin 目录中,则可以使用“.”:

java -cp ".:../lib/*" App <arguments>

在 Linux/Unix 中,类路径分隔符是“:”,但在 Windows 中是“;”。

或者,如果您在父目录中(bin 和 lib 目录所在的位置):

java -cp "bin:lib/*" App <arguments>

【讨论】:

  • 第二个命令有效,应用程序运行。但是,lib 文件夹包含 Derby Embedded jar。当我尝试登录应用程序时,我收到“找不到合适的驱动程序错误”。我知道这个错误是因为应用程序在 lib 文件夹中没有“看到”那些 jars。
  • 好的,修好了。问题是 bin 在包含运行应用程序所需的所有 jar 的 lib 之前加载。通过从 java -cp "bin:lib/*" App 切换到 java -cp "lib/*:bin" App 工作。谢谢
  • 如果您的 bin 目录只有您自己的类(似乎是这种情况),则顺序无关紧要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 2023-03-06
  • 1970-01-01
  • 2012-02-15
  • 2016-08-13
相关资源
最近更新 更多