我一直试图通过手工创建包来编译CMD。我尝试了命令javac -d . Nameinfo.java和javac -d . Returndata.java,其中Nameinfo包含计算,Returndata包含main函数,这个命令工作得非常好。现在,我在我的"java程序“文件夹中制作了两个不同的包,即packx和packy,其中packx包含Nameinfo,packy包含Returndata。现在,当我编译这两个文件时,Nameinfo.java被编译了,但是Returndata无法读取/识别Returndata.java中导入的Nameinfo。
错误:
E:\java programmes>cd packx
E:\java programmes>cd packx
E:\java programmes\packx>javac Nameinfo.java
E:\java programmes\packx>cd..
E:\java programmes>cd packy
E:\java programmes\packy>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发布于 2020-09-18 15:42:05
如果java或javac需要将packx.Returndata作为一种类型来执行某些操作,那么它将在类路径和/或源路径中搜索一个名为packx的目录,而在该目录中,Returndata.java或Returndata.class取决于我们正在讨论的工具和路径。
所以,您在E:\java programmes\packy中,正在编译一些导入packx的代码。因此,javac将查找packx/Returndata.class的类路径和packx/Returndata.java的源路径,因为E:\java programmes不在源路径上;通常它们默认为. (即当前目录)。
请在E:\java programmes文件夹中完成所有这些工作:
E:
cd "\Java programmes"
javac packx/Nameinfo.java
javac packy/Returndata.java或者更好的是,要意识到手动编译多包java应用程序是疯狂的。使用maven、gradle或其他为您处理所有这些问题的构建工具:)
https://stackoverflow.com/questions/63958086
复制相似问题