Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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_Compilation_Dependencies_Javac - Fatal编程技术网

在Java中编译具有依赖项的类

在Java中编译具有依赖项的类,java,compilation,dependencies,javac,Java,Compilation,Dependencies,Javac,鉴于以下类别: package a.b; public class C { public B b; } 并且,在另一个文件中: public class B {} 站在文件夹中,正在执行 javac B.java javac a/b/C.java -cp . 将在文件夹内生成B.class,并将返回第二个命令中未找到的符号 如何在不修改任何类B和C的情况下编译C.java 编辑:可能这无法完成如果在同一个java文件中创建两个类,那么只有一个类必须声明为公共类。并且文件名应指定为

鉴于以下类别:

package a.b;
public class C {
    public B b;
}
并且,在另一个文件中:

public class B {}
站在文件夹中,正在执行

javac B.java
javac a/b/C.java -cp .
将在文件夹内生成B.class,并将返回第二个命令中未找到的符号

如何在不修改任何类B和C的情况下编译C.java


编辑:可能这无法完成

如果在同一个java文件中创建两个类,那么只有一个类必须声明为公共类。并且文件名应指定为 公共类名.java

另外,您创建类B实例的方法不正确。必须按照以下步骤进行: B=新的B

确保编译为: javac-d。C.java


并确保从类B中删除公共访问修饰符。

为什么要单独编译它们

javac B.java a/b/C.java
我相信这会很好,因为javac将能够看到您的两个文件


您甚至不需要-cp选项,因为您已经在告诉javac您需要的一切;是正确的类字段两个类都在不同的文件中如果它们在不同的文件中,那么将第3行修改为:B=新B;并使用包a.b.java的javac-d目录进行编译。这将使它起作用,并确保您已经编写了主方法问题是,在不对任何文件进行任何修改的情况下,您的Symbol not found错误被发出,因为javac无法解析C.java中的变量声明,对吗?我测试了一下,它不起作用。即使成功了,也不能解决我的问题。也许这是不可能的,怎么办?javac是否无法定位一个或两个文件,或者在编译文件时发出错误?同样的错误也会发生,Symbol not found指的是类CI中字段B的类型B,我完全不知道为什么这样做不起作用。也许你可以尝试一个实际的依赖管理程序,比如或者?不行,我需要用javac编译这两个类