我一直在使用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
行星的Fiel结构:
C:\OCA\com\oca\tutorial\planets
主要GreetingUniverse的Fiel结构:
C:\OCA\GreetingUniverse
来自命令提示符的错误消息:
答案 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.tutorial
,Venus
,Mars
和Earth
位于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