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

在Java中使用命令行编译和运行多个包,java,command-line,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 GreetingUniver

我一直在使用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
主迎宾区的现场结构:

C:\OCA\GreetingUniverse
来自命令提示符的错误消息:


确保编译器可以找到所有文件。转到包含
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
中。

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

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

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

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

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

编辑:

为了澄清,以下是目录结构的设置方式:

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

现在运行以下命令:

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


您的问题以“命令行+错误”结尾,但您没有说明您尝试了什么以及错误是什么。你能添加这个吗?你的
OCA
目录下的文件结构是什么?@brettjonesdev下面有一个屏幕截图,你可能出于某种原因没有看到它。通过单击左上角的图标,可以从Windows命令提示符复制和粘贴。在这里寻求帮助时,这比屏幕截图更可取,因为你可以提供所有错误。@Steve啊,明白了。愚蠢的过滤互联网…@Rahoul请记住对任何有用的答案进行投票,然后单击复选标记以接受对您最有帮助的答案。祝你的Java好运!我刚刚尝试将GreetingUniverse.java移到com\oca\tutorial,路径与com.oca.tutorial.planets相同,但是。。。请看新的screenshot@Rahoul您需要从
C:\OCA
编译,并提供要编译的.java文件的相对路径(例如
javac com/OCA/tutorial/GreetingUniverse.java
。不要cd到子目录,因为
javac
将无法找到其他.java文件。@Rahoul怎么办“不工作意味着什么"?如果您提供有关最近尝试的更多信息,我很高兴继续为您提供帮助。我将尝试此方法。请稍等。如果输出类文件不存在classes文件夹,您将需要创建一个classes文件夹这正是我文件夹OCA folder中的结构。在执行compi时,您需要位于
C:\OCA
激化