java命令classpath问题

时间:2017-04-22 06:37:59

标签: java jar javac

我在这个简单的场景中遇到了奇怪的问题。

我有一个包含以下类的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个

语法是正确的,那么我在这里做错了什么......?

3 个答案:

答案 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 ;;主