【问题标题】:Compiling and running multiple packages using the command line in Java在 Java 中使用命令行编译和运行多个包
【发布时间】:2013-05-31 01:47:22
【问题描述】:

我一直在使用 IDE,但现在,为了准备我的 1Z0-803 考试,我需要从命令行运行和编译。问题是我有多个包,我试图找到答案,但到目前为止没有任何效果。

所以我有:

package com.oca.tutorial;

import com.oca.tutorial.planets.Earth;
import com.oca.tutorial.planets.Mars;
import com.oca.tutorial.planets.Venus;

public class GreetingUniverse {


    public static void main(String[] args) {

        System.out.println("greetings universe");

        new Earth();
        new Mars();
        new Venus();
        }
}

金星类:

package com.oca.tutorial.planets;

public class Venus {

    public Venus() {

        System.out.println("Hello from Venus");

    }

}

火星类

 package com.oca.tutorial.planets;

    public class Mars {


        public Mars (){

            System.out.println("Hello from Mars");


        }

    }

还有我的地球课

 package com.oca.tutorial.planets;

    public class Earth {


        public Earth (){

            System.out.println("Hello from earth");


        }

    }

命令行+错误

预期输出:

greetings universe
Hello from earth
Hello from Mars
Hello from Venus

行星的场结构:

C:\OCA\com\oca\tutorial\planets

主要 GreetingUniverse 的字段结构:

C:\OCA\GreetingUniverse

来自命令提示符的错误消息:

【问题讨论】:

  • 您的问题以“命令行+错误”结尾,但您没有说您尝试了什么以及错误是什么。可以加这个吗?
  • 你的OCA目录下的文件结构是什么?
  • @brettjonesdev 下面有一个屏幕截图,您可能由于某种原因看不到该屏幕截图
  • 附注您可以通过单击左上角的图标从 Windows 命令提示符复制和粘贴。在此处寻求帮助时,这比屏幕截图更可取,因为您可以提供所有错误。
  • @Steve 啊,明白了。愚蠢的过滤互联网......

标签: java command-line


【解决方案1】:

确保编译器可以找到所有文件。转到包含com 文件夹的目录并使用:

javac -d classes com\oca\tutorial\GreetingUniverse.java

或者干脆

javac -d classes com\oca\tutorial\*.java

使用这种文件结构

com
 |-oca
    |-tutorial
       |  GreetingUniverse.java
       |-planets
          Earth.java
          Mars.Java
          Venus.java

编译时需要位于C:\OCA

【讨论】:

  • 我会试试这个。请稍等
  • 如果输出类文件不存在,您将需要创建一个类文件夹
  • 这正是我在 OCA 文件夹中的结构
  • 编译时需要位于C:\OCA
【解决方案2】:

首先您可以 cd 到 com/ 所在的基本目录。那么,

javac -d bin com\oca\tutorial\*.java com\oca\tutorial\planets\*.java

编辑: 正如上面的海报所说(并发现),您的文件结构是错误的。如果 com.oca.tutorial 包中有类 GreetingUniverse,则文件路径应为 com\oca\tutorial\GreetingUniverse.java。

【讨论】:

    【解决方案3】:

    请注意,您为每个类声明包。 GreetingUniversecom.oca.tutorial 包中,VenusMarsEarthcom.oca.tutorial.planets 包中。 Java 要求 .java 文件位于与其包名称相同的目录中。例如,GreetingUniverse.java 需要位于名为 com\oca\tutorial 的子目录中。该子目录可以位于您当前用于编译的OCA 目录中。

    如果在将 .java 文件移动到正确的目录后仍然遇到类似的错误,请尝试在同一命令行中包含每个类的所有 .java 文件。很久没有从命令行编译大型项目了。据我所知,这不应该是必要的,但肯定值得一试。

    编辑:

    为了澄清,这就是你的目录结构应该如何设置:

    C:
    +-- OCA
    +-- com
    +-- 奥卡
    +-- 教程
    -- GreetingUniverse.java
    +-- 行星
    -- Earth.java
    -- Mars.java
    -- Venus.java

    现在运行以下命令:

    C:\OCA> javac com/oca/tutorial/GreetingUniverse.java

    【讨论】:

    • @Rahoul 请记住对任何有用的答案进行投票,然后单击复选标记以接受对您最有帮助的答案。祝你的 Java 好运!
    • 我只是尝试将 GreetingUniverse.java 移动到 com\oca\tutorial 下 com.oca.tutorial.planets 的同一路径下,但是...请看新截图
    • @Rahoul 您需要从C:\OCA 编译并提供您要编译的.java 文件的相对路径(例如javac com/oca/tutorial/GreetingUniverse.java。不要cd 到子目录,因为javac 会然后无法找到其他 .java 文件。
    • @Rahoul “不工作是什么意思”?如果您提供有关您最近尝试的更多信息,我很高兴继续为您提供帮助。
    猜你喜欢
    • 2013-09-25
    • 2013-11-08
    • 2014-02-03
    • 2017-10-14
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    相关资源
    最近更新 更多