如何在 java 中正确设置类路径
How to set the classpath correctly in java
我需要使用 gson
库编译和 运行 简单代码,但我不能使用 Maven、Gradle 或 IDE。
该目录包含 Main.java
和 gson-2.9.0.jar
javac -cp gson-2.9.0.jar Main.java
正常工作并创建 Main.class
但是当我运行java -cp ./*: Main
时,我得到
Error: Could not find or load main class Main.
Caused by: java.lang.ClassNotFoundException: Main
我还尝试了以下命令:
java -cp gson-2.9.0.jar Main
java -cp gson-2.9.0.jar: Main
java -cp ./gson-2.9.0.jar:./* Main
但是所有这些命令都给出相同的结果。我以前从来没有在没有 Maven 或 IDEA 的情况下从命令行编写 运行 代码,所以我认为这是类路径规范的问题。我在这里做错了什么?
如果您的 main class 在一个包中(有一个 package ...
声明),您需要在 java
调用中包含包名称,例如java -cp ... mypackage.Main
.
此外,java
documentation 表示 -cp
/ --class-path
:
As a special convenience, a class path element that contains a base name of an asterisk (*) is considered equivalent to specifying a list of all the files in the directory with the extension .jar or .JAR.
因此,对 .class
个文件使用 *
无效;相反,您必须指定目录名称。根据您的问题,您似乎正在使用 Linux,并且 .class
文件和 JAR 位于同一目录中,因此以下内容应该适用于您的情况:
java -cp gson-2.9.0.jar:. Main
(注意:
后面的.
,表示在class路径中包含当前目录)
我需要使用 gson
库编译和 运行 简单代码,但我不能使用 Maven、Gradle 或 IDE。
该目录包含 Main.java
和 gson-2.9.0.jar
javac -cp gson-2.9.0.jar Main.java
正常工作并创建 Main.class
但是当我运行java -cp ./*: Main
时,我得到
Error: Could not find or load main class Main.
Caused by: java.lang.ClassNotFoundException: Main
我还尝试了以下命令:
java -cp gson-2.9.0.jar Main
java -cp gson-2.9.0.jar: Main
java -cp ./gson-2.9.0.jar:./* Main
但是所有这些命令都给出相同的结果。我以前从来没有在没有 Maven 或 IDEA 的情况下从命令行编写 运行 代码,所以我认为这是类路径规范的问题。我在这里做错了什么?
如果您的 main class 在一个包中(有一个 package ...
声明),您需要在 java
调用中包含包名称,例如java -cp ... mypackage.Main
.
此外,java
documentation 表示 -cp
/ --class-path
:
As a special convenience, a class path element that contains a base name of an asterisk (*) is considered equivalent to specifying a list of all the files in the directory with the extension .jar or .JAR.
因此,对 .class
个文件使用 *
无效;相反,您必须指定目录名称。根据您的问题,您似乎正在使用 Linux,并且 .class
文件和 JAR 位于同一目录中,因此以下内容应该适用于您的情况:
java -cp gson-2.9.0.jar:. Main
(注意:
后面的.
,表示在class路径中包含当前目录)