【发布时间】: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.java 和 B.java
创建了类文件但我无法运行我的代码
我试过了
java -cp d:\User\java\java_programs\ package1.B
但是错误
错误:无法找到或加载主类 package1.B
【问题讨论】:
-
您需要阅读 Java 类路径的工作原理,对于 package1,您的类路径的根将是
C;`. If you addC:` 到 -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