我一直在尝试通过CMD手动创建包进行编译。我尝试了命令javac -d . Nameinfo.java
和javac -d . Returndata.java
,其中Nameinfo
包含计算,Returndata
包含主函数,这个命令运行得非常好。现在我在我的";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 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
如果java或javac需要packx.Returndata
作为一种类型来执行某些操作,它将在类路径和/或源路径中搜索名为packx
的目录,其中Returndata.java
或Returndata.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应用程序是疯狂的。使用maven
、gradle
或其他为您处理所有这些的构建工具:(