如何在命令行中运行一个依赖于jar文件的Java程序?

6
我有一个简单的Java文件Q.java,依赖于一个外部库文件X.jar。 Q.java和X.jar都在同一个目录中。我可以通过命令行编译Q.java:"javac -cp X.jar Q.java"。这会生成一个Q.class文件。现在该如何运行它呢? 我尝试了以下方法:
1)java Q 2)java -cp X.jar Q
但我一直收到"Exception in thread "main" java.lang.NoClassDefFoundError: Q Caused by: java.lang.ClassNotFoundException: Q"的错误提示。
现在我已经有了class文件,该如何通过命令行运行它呢?

在 Q.java 文件中有 package 声明吗? - Ted Hopp
@TedHopp 会有所不同吗?我有一个类似的问题:http://stackoverflow.com/questions/43156180/classpath-option-works-for-javac-but-not-for-java-windows - Florian Straub
2个回答

11
java -cp X.jar:. Q

你需要在classpath中指定要使用JAR依赖项和当前本地目录来解析类。


根据评论的建议进行编辑:

在Windows上,将:替换为;

java -cp X.jar;. Q

4
在Windows中,您必须使用";"而不是":",因此它应该是"java -cp X.jar;. Q"。 - Ed Staub

0

将当前目录设置在类路径中,这应该可以解决问题。大多数情况下,我们需要将当前目录设置在类路径中,因此通常建议在系统CLASSPATH环境变量中设置“.”(不带引号),而不是为每次运行设置。


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