Java 从命令行中的不同包访问类
我在C:\Users\Documents文件夹中创建了两个文件夹。我将文件夹命名为A和B。在文件夹A中,我写了下面的java类Java 从命令行中的不同包访问类,java,class,Java,Class,我在C:\Users\Documents文件夹中创建了两个文件夹。我将文件夹命名为A和B。在文件夹A中,我写了下面的java类 package A; public class Food { int a =6; public int c = 10; } 在文件夹B里,我写了下面的内容 package B; import A.*; public class Car { public static void main(String[] args) { Food food = new
package A;
public class Food {
int a =6;
public int c = 10;
}
在文件夹B里,我写了下面的内容
package B;
import A.*;
public class Car {
public static void main(String[] args) {
Food food = new Food();
System.out.println(food.c);
}
}
我能够从文件夹A中编译类食物。但是当我试图从文件夹B中编译类Car时,我发现下面的编译错误。如何解决这个问题
Car.java:2: error: package A does not exist
import A.*;
^
Car.java:6: error: cannot find symbol
Food food = new Food();
^
symbol: class Food
location: class Car
Car.java:6: error: cannot find symbol
Food food = new Food();
^
symbol: class Food
location: class Car
3 errors
您应该在
Documents
文件夹中,以便在编译Car
类时访问包A和包B
您的compile语句必须类似于
javac -cp . B/Car.java
注意:我把classpath作为当前目录(.)考虑。类文件在它下面是可用的
要运行classCar
,请使用以下命令
java -cp . B.Car
使用main()运行类时,您需要提供类名的完整限定路径,即packagename.className您需要从文档中编译类,我可以按照您的建议编译类食品。但是当我从Documents文件夹运行类(java-cp.B\Car)时,我得到如下错误:线程“main”java.lang.NoClassDefFoundError中的异常:B\Car(错误名称:B/Car)位于java.lang.ClassLoader.defineClass1(本机方法)在java.net.URLClassLoader.defineClass(未知源代码)的java.lang.ClassLoader.defineClass(未知源代码)的java.security.SecureClassLoader.defineClass(未知源代码)中,您必须给出.java扩展名,以及为什么运行编译类需要.java扩展名?