我正在遵循Oracle Java SE 8考试准备的练习1.2,该练习指示我构建一个主类GreetingsUniverse
和三个将由主类初始化的类; Mars
,Earth
和Venus
。
我将com
目录存储在位置:C:\Users\Chris\Documents\JavaMM
package com.ocajexam.tutorial;
import com.ocajexam.tutorial.planets.Earth;
import com.ocajexam.tutorial.planets.Venus;
import com.ocajexam.tutorial.planets.Mars;
public class GreetingsUniverse
{
public static void main (String[] args)
{
System.out.println("Greetings, Universe!");
Earth e = new Earth();
Mars m = new Mars();
Venus v = new Venus();
}
}
package com.ocajexam.tutorial.planets;
public class Mars
{
public Mars()
{
System.out.println("Hello from Mars!");
}
}
package com.ocajexam.tutorial.planets;
public class Earth
{
public Earth()
{
System.out.println("Hello from Earth!");
}
}
package com.ocajexam.tutorial.planets;
public class Venus
{
public Venus()
{
System.out.println("Hello from Venus!");
}
}
练习目的是确定编译代码所需的命令行参数。
我将GreetingsUniverse
java文件存储在com\ocajexam\tutorial\
中,行星存储在com\ocajexam\tutorial\planets
我尝试了各种解决方案但没有成功:
javac -d . -cp com\ocajexam\tutorial\planets com\ocajexam\tutorial\GreetingsUniverse.java
javac -d . -cp com com\ocajexam\tutorial\GreetingsUniverse.java
我一直收到以下错误:
C:\Users\Chris\Documents\JavaMM>javac -d . -cp com com\ocajexam\tutorial\GreetingsUniverse.java
com\ocajexam\tutorial\GreetingsUniverse.java:8: error: cannot find symbol
Earth e = new Earth();
^
symbol: class Earth
location: class GreetingsUniverse
com\ocajexam\tutorial\GreetingsUniverse.java:8: error: cannot find symbol
Earth e = new Earth();
^
symbol: class Earth
location: class GreetingsUniverse
com\ocajexam\tutorial\GreetingsUniverse.java:9: error: cannot find symbol
Mars m = new Mars();
^
symbol: class Mars
location: class GreetingsUniverse
com\ocajexam\tutorial\GreetingsUniverse.java:9: error: cannot find symbol
Mars m = new Mars();
^
symbol: class Mars
location: class GreetingsUniverse
com\ocajexam\tutorial\GreetingsUniverse.java:10: error: cannot find symbol
Venus v = new Venus();
^
symbol: class Venus
location: class GreetingsUniverse
com\ocajexam\tutorial\GreetingsUniverse.java:10: error: cannot find symbol
Venus v = new Venus();
^
symbol: class Venus
location: class GreetingsUniverse
6 errors
有谁知道我在哪里出错?
我还尝试了以下产生不同错误消息:
C:\Users\Chris\Documents\JavaMM>javac -d . com\ocajexam\tutorial\planets\Earth.java;com\ocajexam\tutorial\planets\Mars.java;com\ocajexam\tutorial\planets\Venus.java com\ocajexam\tutorial\GreetingsUniverse.java
产生此错误:
javac: file not found: com\ocajexam\tutorial\planets\Earth.java;com\ocajexam\tutorial\planets\Mars.java;com\ocajexam\tutorial\planets\Venus.java
Usage: javac <options> <source files>
use -help for a list of possible options
文件肯定存在,如果我在planets
目录上,我可以在那里看到它们:
Directory of C:\Users\Chris\Documents\JavaMM\com\ocajexam\tutorial\planets
16/10/2016 11:33 <DIR> .
16/10/2016 11:33 <DIR> ..
15/10/2016 21:48 135 Earth.java
15/10/2016 21:48 132 Mars.java
15/10/2016 21:48 135 Venus.java
更新: 经过进一步调试后,这变得越来越陌生......
我正在尝试使用命令的前半部分仅编译行星文件:
javac -d . -cp com\ocajexam\tutorial\planets\*.java
当我检查行星目录时,只编译了两个行星。当我删除没有编译的java类时,只编译了一个文件!
当我使用相同的命令指定我要编译的java文件时:
javac -d . -cp com\ocajexam\tutorial\planets\Venus.java
我收到以下错误:
javac: no source files
Usage: javac <options> <source files>
use -help for a list of possible options
我无法理解这一点,因为Venus.java
是我运行/*.java
编译命令以检测目录中的任何java文件时编译的文件之一
答案 0 :(得分:0)
您需要先编译所有类。 javac 仅编译您的主类。使用javac -cp /path/to/file/*.java
。星号(*.java
)表示编译文件夹中的所有java类。
答案 1 :(得分:0)
《 OCA Java SE 8程序员I学习指南》中的示例使用不带括号的构造函数。
package com.ocajexam.tutorial.planets;
public class Earth {
public Earth {
System.out.println("Hello from Earth!");
}
}
这当然应该是
package com.ocajexam.tutorial.planets;
public class Earth {
public Earth () {
System.out.println("Hello from Earth!");
}
}
然后您可以运行javac com/ocajexam/tutorial/greetingsUniverse.java
和java com/ocajexam/tutorial/GreetingsUniverse
。
尽管严格地说,这不是问题的答案(使用带括号的构造函数),但可能会帮助其他人遇到相同的错误。
答案 2 :(得分:-1)
所有使用的.java文件都需要在类路径中。即javac -d . -cp com com\ocajexam\tutorial\*.java com\ocajexam\tutorial\planets\*.java
尝试做:javac -d。 -cp com com / ocajexam / tutorial / GreetingsUniverse.java com / ocajexam / tutorial / planets / Earth.java com / ocajexam / tutorial / planets / Mars.java com / ocajexam / tutorial / planets / Venus.java