【问题标题】:Compiling/Running Java files in Terminal在终端中编译/运行 Java 文件
【发布时间】:2012-06-29 11:29:30
【问题描述】:

我正在尝试运行一个调用多个文件的文件,但我遇到了一些错误。

在名为 day4Measurement 的当前目录中,我有 13 个文件:BuggyMeasurement.java、BuggyMeasurement01.java、BuggyMeasurement02.java、BuggyMeasurement03.java、BuggyMeasurement04.java...BuggyMeasurement10.java、MeasurementTest。 java和Measurement.java。

Measurement.java 包含 main() 并调用所有其他文件。

这是 main()

public static void main(String [] args){
    JUnitCore tester = new JUnitCore();
    String s = "Failed to detect: ";
    int count = 0;
    String [] tests = {"toString prints reverse inches then feet", // 01
        "plus modifies this", // 02
        "minus modifies this", // 03
        "multiple modifies this", // 04
        "plus incorrect roll over", // 05
        "minus incorrect roll over", // 06
        "multiple incorrect roll over", // 07
        "plus incorrect non-roll over", // 08
        "minus incorrect non-roll over", // 09
        "multiple incorrect non-roll over", // 10
        "CORRRRECTTT!!!"
    };
    for (int i = 1; i < tests.length + 1; i++){
        testRound = i;
        System.out.println("Running: " + tests[i-1]);
        TestRunner.run(day4Measurement.MeasurementTest.class);
        Result temp = tester.run(day4Measurement.MeasurementTest.class);
        if (temp.wasSuccessful()) {
            s += tests[i-1] + "; ";
            count++;
        }

    }

    System.out.print(10-(count-1)*0.5 + " ");
    System.out.println(s);
}

在 Mac 终端中,我运行

javac Measurement.java

我遇到了问题。这是我得到的:

有什么建议吗?

【问题讨论】:

  • 请不要发布文字图片,请发布文字本身。
  • 请注意,惯用的 for 循环更像:for (int i=0; i&lt;foo.length; i++) { bar(foo[i]); }。数组是零索引的,你越早习惯它,你的代码就越容易被其他人阅读——你也会更容易理解其他人的代码。

标签: java macos command-line terminal


【解决方案1】:

一旦您将所有文件都放在一个目录中(它们可能在子目录中 - 只要它们都在某个共享目录中),我们将其命名为 dir,使用以下命令:

javac -classpath dir Measurement.java

假设您从 Measurement.java 所在的同一目录运行命令。如果不是,并且无论哪种方式,您都更安全,请将其设为 dir 和 Measurement.java 的显式路径,例如:

javac -classpath /home/yourusername/dir /home/yourusername/dir/Measurement.java

这对 java 编译器说“我想编译 Measurement.java,这就是它所在的位置,在这里您可以找到它需要的所有类和/或源文件。”然后它将仅编译 Measurement.java 引用的文件,因此您无需担心意外编译所有 java 文件。

【讨论】:

    【解决方案2】:

    要检查的一件事是确保这些文件的目录结构反映了包结构。例如,如果 ABC 类的包是 com.foo,那么您的 ABC.java 文件应该位于 com/foo 文件夹中。

    【讨论】:

      【解决方案3】:

      用javac *.java编译所有文件

      【讨论】:

      • @cmastudios:如果我没看错,他会问javac 是否知道BuggyMeasurement01.java 在它的要编译的东西列表中,并且不会去搜索它.或者更确切地说,它是否知道的足够多,这意味着必须以某种方式按顺序编译文件。
      猜你喜欢
      • 2014-02-05
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      相关资源
      最近更新 更多