【问题标题】:Compiler couldn't read imported class [duplicate]编译器无法读取导入的类 [重复]
【发布时间】:2020-09-18 14:53:12
【问题描述】:

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

【问题讨论】:

  • edit 发帖并显示Nameinfo.javaReturndata.java。我怀疑package ...; 语句丢失了。

标签: java cmd import package


【解决方案1】:

如果 java javac 需要 packx.Returndata 作为类型来做某事,它将搜索名为 packx 的目录的类路径和/或源路径,在其中,@ 987654323@ 或 Returndata.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 或其他可以为您处理所有这些的构建工具:)

【讨论】:

    猜你喜欢
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多