2017-09-04 96 views
-2

所以我完全不熟悉通过命令行运行代码(我习惯于使用Eclipse)。当我使用不同的包时,我无法弄清楚编译类的解决方案。Java:编译时找不到符号

这是我的第一类(GreetingsUniverse.java):

package com.ocajexam.tutorial; 
import com.ocajexam.tutorial.*; 

public class GreetingsUniverse { 
    public static void main(String[] args) { 
     System.out.println("Greetings, Universe!"); 
     Earth e = new Earth(); 
    } 
} 

二等(Earth.java):

package com.ocajexam.tutorial.planets; 
public class Earth { 
    public Earth() { 
    System.out.println("Hello from Earth!"); 
    } 
} 

我试图compliling,如下所示:

javac -d . Earth.java 

它在com/ocajexam/tutorial/planets中创建一个地球类文件。

然后,当我尝试:

javac -d . GreetingsUniverse.java 

我收到以下错误信息:

GreetingsUniverse.java:9: error: cannot find symbol 
       Earth e = new Earth(); 
       ^
    symbol: class Earth 
    location: class GreetingsUniverse 
GreetingsUniverse.java:9: error: cannot find symbol 
       Earth e = new Earth(); 
         ^
    symbol: class Earth 
    location: class GreetingsUniverse 
2 errors 

我也试着离开了-d和其他东西,但继续得到同样的错误。我认为这与不同的软件包有关。有人可以帮帮我吗?

+0

使用IDE像Eclipse –

+0

尝试使用-classpath alternativley指定要编译的,而不是做separatley – jontro

+0

尝试'cd'-ING到包树和运行顶部的所有文件'javac com/ocajexam/tutorial/*。java'和'javac com/ocajexam/tutorial/planets/*。java' – khelwood

回答

3

Earth是在包com.ocajexam.tutorial.planets但在进口中GreetingsUniverse要导入com.ocajexam.tutorial.*,这将不导入Earth类为您服务。所以,改变import com.ocajexam.tutorial.*;要么import com.ocajexam.tutorial.planets.*;import com.ocajexam.tutorial.planets.Earth;