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 文件。