【问题标题】:Java command Line compilation with multiple sources具有多个源的 Java 命令行编译
【发布时间】:2018-01-15 13:49:04
【问题描述】:

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

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

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

我希望能够从我的package 在其他源目录中的命令行编译,请看下图

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

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

任何帮助将不胜感激

【问题讨论】:

  • 另一种方法是定义两个不同的项目。

标签: java command-line compilation


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    使用 -d 命令行参数和 javac 来告诉它你想将编译后的类文件存储在哪个目录中。复杂后运行程序,使用 java -cp

    javac -d some/directory javaprogram.java
    

    java - cp一些/目录java程序

    【讨论】:

      【解决方案3】:

      您应该在src/java 目录中,并相应地调整您的命令。

      【讨论】:

      • 我能够从 src 目录实现我的目标
      • 毫无疑问,但这是最简单的方法。
      猜你喜欢
      • 2011-06-15
      • 2013-09-25
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 2011-09-14
      • 2023-03-29
      相关资源
      最近更新 更多