我在这个简单的场景中遇到了奇怪的问题。
我有一个包含以下类的jar文件:
package com.example;
public class Test{
public void perform(){
System.out.println("Performing testing one");
}
}
我创建了一个Main类来调用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类时:
java -cp"。\ *"主
它出现以下错误:
错误:无法找到或加载主类
如果我尝试在没有-cp
参数的情况下运行Main类,则会出现以下错误:
线程中的异常" main" java.lang.NoClassDefFoundError: COM /例子/测试 在Main.main(Main.java:5)引起: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个
语法是正确的,那么我在这里做错了什么......?
答案 0 :(得分:0)
使用-cp时,需要逐个指定jar名称。使用*通常不会向类路径添加任何内容。祝你好运!
答案 1 :(得分:0)
一切都错了。
com/example
。com
。编译器命令是
javac com/example/Main.java
执行命令是
java com.example.Main
您不需要只有一个类的JAR文件。
答案 2 :(得分:-1)
经过大量的实验和网上搜索后,我终于发现我们需要在classpath之后放置;
才能使其正常工作。
因此,以下命令确实运行Main类:
java -cp"。\ *&#34 ;;主