Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从命令行中的不同包访问类_Java_Class - Fatal编程技术网

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

我在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 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作为当前目录(.)考虑。类文件在它下面是可用的

要运行class
Car
,请使用以下命令

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扩展名?