2016-10-15 58 views
0

我正在练习Oracle Java SE 8考试准备练习1.2,它指导我构建一个主类GreetingsUniverse和三个将由主类初始化的类; Mars,EarthVenus编译java代码找不到源文件

我有存储在位置的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!"); 
    } 
} 

练习的目的是确定编译代码所需的命令行参数。

我存储在com\ocajexam\tutorial\GreetingsUniverse Java文件和行星店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目录dir我可以看到它们:

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

你的classpath是'.',而不是'com'。 – tkausl

+0

我也试过,并得到相同的错误 – algorhythm

+1

'Venus.java',例如需要它自己的文件。您的问题的格式不会很清楚 –

回答

-1

所有的.java fi使用的文件需要放在类路径中。即javac -d . -cp com com\ocajexam\tutorial\*.java com\ocajexam\tutorial\planets\*.java

尝试做:javac -d。 -co com/ocajexam/tutorial/GreetingsUniverse.java com/ocajexam/tutorial/planets/Earth.java com/ocajexam/tutorial/planets/Mars.java com/ocajexam/tutorial/planets/Venus.java

+0

我试过这个,并且仍然得到相同的错误 – algorhythm

+0

根本不可能在类路径上有源文件,并且类文件位置不需要包含路径的包部分,因为它是自动添加的。 –

+0

单位:docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html 如果未指定-sourcepath选项,则还会搜索用户类路径以查找源文件。 –

0

You需要先编译所有的类。 javac只能编译你的主类。使用javac -cp /path/to/file/*.java。星号(*.java)表示编译文件夹中的所有java类。

+0

这是编译这些文件,但我仍然遇到同样的错误,当我尝试编译主类时 – algorhythm

+0

如果在类路径中,则不需要手动编译每个类。编译器足够聪明,可以自动包含其他类。 –

+0

然后我不明白为什么它会抛出一个错误,说它找不到它们 – algorhythm