具有多个源的 Java 命令行编译

标签 java command-line compilation

我知道标题没有完全描述我的问题,但我不知道还能怎样问这个问题。我知道有工具可以做到这一点,但我想了解编译器在 java 中的工作原理,我编写了一些非常基本的代码,并且我能够使用

毫无问题地编译它们
javac -sourcepath java -d ../target/dir1 java/shapes/mainclass/TestRun.java

在命令行中,但只有当位于同一源目录中时才有效,如下图所示

Packages are in the same source directory

我希望能够从命令行进行编译,其中我的也位于其他源目录中,请参见下图

Packages are in multiple sources

有人知道我该怎么做吗?我尝试将命令行修改为

javac -sourcepath java -d ../target/java/dir1/shapes/mainclass/TestRun.java 但这会导致以下错误

java\dir1\shapes\mainclass\TestRun.java:3: error: package shapes.classes does not exist
import shapes.classes.*;
^
java\dir1\shapes\mainclass\TestRun.java:8: error: cannot find symbol
                ShapeMain circle = new Circle(5);
                ^
  symbol:   class ShapeMain
  location: class TestRun
java\dir1\shapes\mainclass\TestRun.java:8: error: cannot find symbol
                ShapeMain circle = new Circle(5);
                                       ^
  symbol:   class Circle
  location: class TestRun
java\dir1\shapes\mainclass\TestRun.java:9: error: cannot find symbol
                ShapeMain rectangle = new Rectangle(8, 9.9);
                ^
  symbol:   class ShapeMain
  location: class TestRun
java\dir1\shapes\mainclass\TestRun.java:9: error: cannot find symbol
                ShapeMain rectangle = new Rectangle(8, 9.9);
                                          ^
  symbol:   class Rectangle
  location: class TestRun
java\dir1\shapes\mainclass\TestRun.java:10: error: cannot find symbol
                ShapeMain triangle = new Triangle(10, 4.5);
                ^
  symbol:   class ShapeMain
  location: class TestRun
java\dir1\shapes\mainclass\TestRun.java:10: error: cannot find symbol
                ShapeMain triangle = new Triangle(10, 4.5);
                                         ^
  symbol:   class Triangle
  location: class TestRun
7 errors

任何帮助将不胜感激

最佳答案

我设法找到了一个解决方案,你应该使用javac -sourcepath java/dir1;java/dir2 -d ../target/dir1 java/dir1/shapes/mainclass/TestRun.java

请注意,在-sourcepath上,它不是-sourcepath java,而是它的-sourcepath java/dir1;java/dir2,它指定了位置.java 类位于每个目录中

关于具有多个源的 Java 命令行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48264320/

相关文章:

java - 如何创建 List<T> 到 Map<String, T> 而不是 Map<String, List<T>>?

mysql - c :\to mysql> mode in command promt

scala: list.flatten: 没有找到匹配参数类型 (Any) => Iterable[Any] 的隐式参数

compilation - 为什么Erlang编译:file does not report error for unknown options?

build - CMake 用/MTd 覆盖我的/MDd 标志

java - 给定一个整数数组 [x0 x1 x2],你如何计算从 [0 0 0] 到 [x0 x1 x2] 的所有可能排列?

java - 如何在java中将给定的数字减少为两位数

java - 像 grapes/maven/ivy 这样的工具的远程依赖管理器如何设法利用相同的底层存储库......?

regex - 需要帮助在扩展的 globbing 中混合标准

c++ - 在结束运行之前在 C++ 中获取 shell 命令输出