编译器无法读取导入的类



我一直在尝试通过CMD手动创建包进行编译。我尝试了命令javac -d . Nameinfo.javajavac -d . Returndata.java,其中Nameinfo包含计算,Returndata包含主函数,这个命令运行得非常好。现在我在我的";java程序";文件夹,即packxpacky,其中packx包含Nameinfopacky包含Returndata。现在,当我编译这两个时,Nameinfo.java被编译了,但Returndata无法读取/识别Returndata.java中导入的Nameinfo

错误:

E:java programmes>cd packx
E:java programmes>cd packx
E:java programmespackx>javac Nameinfo.java
E:java programmespackx>cd..
E:java programmes>cd packy
E:java programmespacky>javac Returndata.java
Returndata.java:2: error: package packx does not exist
import packx.Nameinfo;
^
Returndata.java:7: error: cannot find symbol
Nameinfo data = new Nameinfo();
^
symbol:   class Nameinfo
location: class Returndata
Returndata.java:7: error: cannot find symbol
Nameinfo data = new Nameinfo();
^
symbol:   class Nameinfo
location: class Returndata
3 errors

如果javajavac需要packx.Returndata作为一种类型来执行某些操作,它将在类路径和/或源路径中搜索名为packx的目录,其中Returndata.javaReturndata.class取决于我们谈论的工具和路径。

所以,您在E:java programmespacky中,正在编译一些导入packx的代码。因此,javac将在packx/Returndata.class的类路径和packx/Returndata.java的源路径中查找,但它找不到您想要的内容,因为E:java programmes不在源路径上;通常它们默认为CCD_ 23(即当前目录(。

所有这些工作都保存在E:\java程序文件夹中:

E:
cd "Java programmes"
javac packx/Nameinfo.java
javac packy/Returndata.java

或者更好的是,意识到手动编译多包java应用程序是疯狂的。使用mavengradle或其他为您处理所有这些的构建工具:(

最新更新