java 命令类路径问题
java command classpath issue
我在这个简单的场景中遇到了奇怪的问题。
我有一个包含以下内容的 jar 文件 class:
package com.example;
public class Test{
public void perform(){
System.out.println("Performing testing one");
}
}
并且我创建了一个 Main class 来调用 perform 方法,如下所示:
import com.example.Test;
public class Main{
public static void main(String[] args) {
Test test=new Test();
test.perform();
}
}
我已将 jar 和 Main.java 文件放在同一个文件夹中,并使用以下命令成功编译了 Main.java 文件:
javac -cp ".\*" Main.java
但是当我尝试使用以下命令 运行 Main class 时:
java -cp ".\*" Main
它给出以下错误:
Error: Could not find or load main class Main
如果我在没有 -cp
参数的情况下尝试 运行 Main class 它会给出以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError:
com/example/Test
at Main.main(Main.java:5) Caused by: java.lang.ClassNotFoundException: com.example.Test
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
语法正确那么我这里做错了什么...?
使用-cp时需要一个一个指定jar名称。使用 * 通常不会向类路径添加任何内容。祝你好运!
经过大量实验和网上搜索,我终于发现我们需要在class路径后加上;
才能生效。
所以下面的命令 运行 Main class:
java -cp ".\*"; Main
一切都错了。
- 源代码应位于名为
com/example
. 的目录中
- 您应该位于包含
com
. 的目录中
编译命令为
javac com/example/Main.java
执行命令为
java com.example.Main
您不需要只有一个 class 的 JAR 文件。
我在这个简单的场景中遇到了奇怪的问题。
我有一个包含以下内容的 jar 文件 class:
package com.example;
public class Test{
public void perform(){
System.out.println("Performing testing one");
}
}
并且我创建了一个 Main class 来调用 perform 方法,如下所示:
import com.example.Test;
public class Main{
public static void main(String[] args) {
Test test=new Test();
test.perform();
}
}
我已将 jar 和 Main.java 文件放在同一个文件夹中,并使用以下命令成功编译了 Main.java 文件:
javac -cp ".\*" Main.java
但是当我尝试使用以下命令 运行 Main class 时:
java -cp ".\*" Main
它给出以下错误:
Error: Could not find or load main class Main
如果我在没有 -cp
参数的情况下尝试 运行 Main class 它会给出以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/example/Test at Main.main(Main.java:5) Caused by: java.lang.ClassNotFoundException: com.example.Test at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 1 more
语法正确那么我这里做错了什么...?
使用-cp时需要一个一个指定jar名称。使用 * 通常不会向类路径添加任何内容。祝你好运!
经过大量实验和网上搜索,我终于发现我们需要在class路径后加上;
才能生效。
所以下面的命令 运行 Main class:
java -cp ".\*"; Main
一切都错了。
- 源代码应位于名为
com/example
. 的目录中
- 您应该位于包含
com
. 的目录中
编译命令为
javac com/example/Main.java
执行命令为
java com.example.Main
您不需要只有一个 class 的 JAR 文件。