【问题标题】:java command classpath issuejava命令类路径问题
【发布时间】:2017-09-19 05:55:43
【问题描述】:

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

我有一个包含以下类的 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 ".\*" 主要

它给出以下错误:

错误:无法找到或加载主类 Main

如果我尝试在没有 -cp 参数的情况下运行 Main 类,则会出现以下错误:

线程“主”java.lang.NoClassDefFoundError 中的异常: com/example/测试 在 Main.main(Main.java:5) 引起:java.lang.ClassNotFoundException: com.example.Test 在 java.net.URLClassLoader.findClass(未知来源) 在 java.lang.ClassLoader.loadClass(未知来源) 在 sun.misc.Launcher$AppClassLoader.loadClass(未知来源) 在 java.lang.ClassLoader.loadClass(未知来源) ... 1 更多

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

【问题讨论】:

    标签: java jar javac


    【解决方案1】:

    使用 -cp 时需要一一指定 jar 名称。使用 * 通常不会向类路径添加任何内容。祝你好运!

    【讨论】:

    • 我也尝试按照java -cp "test1.jar" Main 运行java 命令,但仍然出现同样的错误
    • Test 所在的 jar 怎么样,你似乎只编译了 main.java。此外,jar 需要位于本地目录才能以这种方式使用,否则您需要完整路径。
    【解决方案2】:

    一切都错了。

    • 源代码应位于名为com/example 的目录中。
    • 您应该在包含com 的目录中。
    • 编译命令是

      javac com/example/Main.java
      
    • 执行命令是

      java com.example.Main
      

    您不需要只有一个类的 JAR 文件。

    【讨论】:

      【解决方案3】:

      经过大量的实验和网上搜索,我终于发现我们需要将;放在classpath之后才能使其工作。 所以下面的命令确实会运行 Main 类:

      java -cp ".\*";主要

      【讨论】:

      • 那行不通,也没有必要。除非您指定要正确运行的类,否则它无法工作,而您没有。
      • @EJP 你能解释一下为什么java -cp ".\*"; Main 有效而java -cp ".\*" Main 无效吗?
      • 两者都不起作用。无法重现。你会得到我所做的:你在帖子中提到的NoClassDefFoundError,除非你改变了你的代码。
      • @EJP 我检查了发布的代码并且确实发生了这种行为。我正在使用 Java 1.8.0_73。
      • @RohitGupta,哇,谢谢哥们。我得到了我的解决方案。我已经尝试解决了两天。你节省了我的时间。再次感谢
      猜你喜欢
      • 1970-01-01
      • 2011-10-24
      • 2020-11-06
      • 1970-01-01
      • 2023-03-11
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 2017-03-11
      相关资源
      最近更新 更多