使用Java中的命令行编译和运行多个包

时间:2013-05-30 16:53:13

标签: java command-line

我一直在使用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");


        }

    }

命令行+错误 enter image description here

预期产出:

greetings universe
Hello from earth
Hello from Mars
Hello from Venus

行星的Fiel结构:

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

主要GreetingUniverse的Fiel结构:

C:\OCA\GreetingUniverse

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

enter image description here

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

首先你可以cd到com /所在的基目录。然后,

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

修改 正如上面的海报所说(并发现),你的文件结构是错误的。如果你在包com.oca.tutorial中有类GreetingUniverse,那么文件路径应该是com \ oca \ tutorial \ GreetingUniverse.java。

答案 2 :(得分:1)

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

如果在将.java文件移动到正确的目录后仍然出现类似的错误,请尝试在同一命令行中为每个类包含所有.java文件。自从我从命令行编译大型项目以来,已经有很长一段时间了。从我记得这不应该是必要的,但它肯定值得一试。

修改

为了澄清,这就是你的目录结构的设置方式:

  

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

现在运行以下命令:

  

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