[英]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 的情况下从命令行运行代码,所以我认为这是类路径规范的问题。 我在这里做错了什么?
如果您的主要 class 在 package 中(具有package...
声明),您需要在java
调用中包含 package 名称,例如java -cp... mypackage.Main
。
此外, java
文档说明了-cp
/ --class-path
:
为了特别方便,包含星号 (*) 基本名称的 class 路径元素被认为等同于指定目录中扩展名为 .jar 或 .JAR 的所有文件的列表。
因此,对.class
文件使用*
不起作用; 相反,您必须指定目录名称。 根据您的问题,您似乎正在使用 Linux,并且.class
文件和 JAR 位于同一目录中,因此以下内容适用于您的情况:
java -cp gson-2.9.0.jar:. Main
(注意:
之后的.
,表示包含类路径的当前目录)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.