编译器无法读取导入的 class

Compiler couldn't read imported class

我一直在尝试通过手动创建包的方式通过 CMD 进行编译。我尝试了命令 javac -d . Nameinfo.javajavac -d . Returndata.java,其中 Nameinfo 包含计算,Returndata 包含主要函数,这个命令工作得很好。现在我在我的“java 程序”文件夹中制作了 2 个不同的包,即 packxpacky,其中 packx 包含 Nameinfopacky 包含 Returndata。现在,当我编译这两个时,Nameinfo.java 得到编译但 Returndata 无法 read/recognize 在 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

if java or javac 需要,比如说,packx.Returndata 作为一个类型来做某事,它会搜索类路径 and/or 名为 packx 的目录的源路径,在该目录中,Returndata.javaReturndata.class 取决于我们正在讨论的工具和路径。

因此,您在 E:\java programmes\packy 中,并且正在编译一些导入 packx 的代码。因此,javac 将在类路径中查找 packx/Returndata.class 并在源路径中查找 packx/Returndata.java 并且找不到您想要的内容,因为 E:\java programmes 不在源代码中小路;通常它们默认为 .(即当前目录)。

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

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

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