我知道标题没有完全描述我的问题,但我不知道还能怎样问这个问题。我知道有工具可以做到这一点,但我想了解编译器在 java 中的工作原理,我编写了一些非常基本的代码,并且我能够使用
毫无问题地编译它们javac -sourcepath java -d ../target/dir1 java/shapes/mainclass/TestRun.java
在命令行中,但只有当包
位于同一源目录中时才有效,如下图所示
我希望能够从命令行进行编译,其中我的包
也位于其他源目录中,请参见下图
有人知道我该怎么做吗?我尝试将命令行修改为
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/