gpt4 book ai didi

javac错误: package com. myproject.planets不存在

转载 作者:行者123 更新时间:2023-11-30 07:33:56 33 4
gpt4 key购买 nike

让我们考虑这样的目录结构:

C:\Tests>tree /F
C:.
│ GreetingsUniverse.java

└───planets
Earth.java
Jupiter.java

地球和木星有 com.myproject.planets 包,GreetingsUniverse 有 com.myproject 包。

Javac 无法编译 GreetingsUniverse.java

C:\Tests>javac -cp "C:\Tests\planets"  GreetingsUniverse.java
GreetingsUniverse.java:3: error: package com.myproject.planets does not exist
import com.myproject.planets.Earth;
^
GreetingsUniverse.java:4: error: package com.myproject.planets does not exist
import com.myproject.planets.Jupiter;
^
GreetingsUniverse.java:19: error: cannot find symbol
new Earth();
^
symbol: class Earth
location: class GreetingsUniverse
GreetingsUniverse.java:20: error: cannot find symbol
new Jupiter();
^
symbol: class Jupiter
location: class GreetingsUniverse
4 errors

再尝试一下:

C:\Tests>javac -cp "C:\Tests\planets\"  GreetingsUniverse.java
javac: no source files
Usage: javac <options> <source files>
use -help for a list of possible options

为什么不能编译?类必须放置在与包相同的目录结构中吗?所以 Jupiter 应该放在 C:\Tests\com\myproject\planets\Jupiter.java 中还是还有其他问题?

最佳答案

最佳实践是在项目目录中包含“src”子目录。然后,根据行业标准,创建“main\java”子目录。然后将目录放入严格对应于包结构的目录中(这是强制性的)。然后,如果您确实想从命令行编译,请使用 -cp 指定“src”目录:

C:.
└───src
└───main
└───java
└───com
└───myproject
└───planets
Jupiter.class
Jupiter.java

c:\temp\project>javac -cp src\main\java src\main\java\com\myproject\planets\Jupiter.java

请注意,包名称必须与相对于类路径的路径完全匹配,因此在我的示例中,包声明是 package com.myproject.planets不是 src.com.myproject.planets。不遵循这一点将会导致像您这样的问题。

如果您有像jp.co.ourcompany.ourdepartment.ourproject.ourpackage.oursubpackage这样的深层包结构,遵循此规则可能会变得很麻烦,但不幸的是,没有办法解决这个问题。

将源代码放在“src\main\java”中的优点是可以得到 Maven 和 Gradle 等行业标准构建工具的支持。您甚至不必告诉他们您的来源在哪里:约定优于配置等等。

关于javac错误: package com. myproject.planets不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35681168/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com