Javac 编译总是必须从包的顶部开始吗? (将包的路径传递给 javac ?)

Javac does compiling always have to be from top of package? (Passing path of package to javac ?)

编译 java 代码时,我被告知编译器必须从包的顶部开始 运行。

也就是说,如果我要编译 Test.java 中的 tools.testing 我必须先设置包层次结构的顶部,包含 /tools 的文件夹以使其工作。

我正在尝试编译的 class 使用同一包中包含的另一个 class,因此将代码的完整路径传递给编译器可防止它看到另一个 [=37] =](因为它不搜索当前目录,而是搜索自身内部的包:./tools/testing 当它已经在 [=32 中时=] )

我想知道这种情况是否总是如此,或者是否有办法,例如:提供包顶部的路径(因为传递完整路径对我来说不起作用)作为参数javac 命令或类似的命令?

谢谢!

您应该使用集成开发环境 (IDE),例如 IntelliJ、Eclipse 或 Netbeans。在 IDE 中,您可以创建一个 Java 项目,其中有一个目录作为 'source root'。

如果您使用 Maven 作为构建工具,则此类目录的默认位置是 /src/main/java/(这是目前 Java 项目的实际标准)。

IDE 会自动为您编译 Java 文件,并允许您在开发过程中轻松 运行 它们。

如果您想 运行 独立应用程序,您必须以某种方式将其打包。一种简单有效的方法是生成一个 .jar 文件,其中包含所有 .class 文件和您需要的其他文件(如图像、.properties 文件等)。如果您为项目指定 pom.xml 文件(又是 Maven)并将 packaging 设置为 jar,Maven 将自动为您创建一个 .jar 文件。您甚至可以通过一些额外的设置使 .jar 文件 运行 可用。

另请参阅 this answer 了解有关包装的更多信息。