【问题标题】:Could not find or load main class package.ClassName无法找到或加载主类包。ClassName
【发布时间】:2020-03-11 11:33:26
【问题描述】:

我有两个包和类 第一个包

D:\User\java\java_programs\mypackage\A.java

package mypackage;
public class A
{
    public void msg(String name)
    {
        System.out.println("Hello "+name);
    }
    public static void main (String args[])
    {
        System.out.println("hello User");
    }
}   

并且C:\package1\B.java中还有一个B类

package package1;
import mypackage.A;
public class B
{
    public static void main (String args[])
    {
        A obj = new A();
        obj.msg("User");
    }
}   

我编译了

C:\package1>javac -cp d:\User\java\java_programs\ B.java

它为 A.javaB.java

创建了类文件

但我无法运行我的代码

我试过了

java -cp d:\User\java\java_programs\ package1.B

但是错误

错误:无法找到或加载主类 package1.B

【问题讨论】:

  • 您需要阅读 Java 类路径的工作原理,对于 package1,您的类路径的根将是 C;`. If you add C:` 到 -cp 参数,它可能会像您预期的那样工作。跨度>
  • 你的意思是运行 class b java -cp c;` package1.B @rsp 它不起作用。同样的错误
  • 我的意思是java -cp C:\;D:\User\java\java_programs package1.B(我之前的评论中没有转义反斜杠)
  • 成功了,谢谢。我需要在类路径中包含两个类,并转义反斜杠。两个不同类的类路径用分号分隔。官方 oracle 文档没有描述不同驱动器中的包。 @rsp
  • 它在没有转义反斜杠符号的情况下工作。 @rsp java-cp c:\;d:\User\java\java_programs package1.B

标签: java package


【解决方案1】:

您需要阅读 Java 类路径的工作原理,对于 package1,您的类路径的根是 C:\。如果您将 C:\ 添加到 -cp 参数中,它将满足您的需求。

命令行变成

java -cp C:\;D:\User\java\java_programs package1.B 

Java 类路径由可以在其中找到包结构的根文件夹组成。 (Jar 文件包含从其根目录开始的包文件夹结构。)

【讨论】:

    猜你喜欢
    • 2016-12-03
    • 2014-08-02
    • 1970-01-01
    • 2023-03-27
    • 2019-01-05
    • 2015-02-06
    • 2018-10-10
    相关资源
    最近更新 更多