2011-01-24 51 views
2

我做了两个文件,一个非常简单的Java例子:编译应用程序后无法找到主类

Dog.java包含:

package com.greg.dog; 

public class Dog { 
    public void bark() { 
     System.out.println("bark"); 
    } 
} 

TestDog.java包含:

package com.greg.dog; 

public class TestDog { 
    public static void main(String args[]) { 
     Dog d = new Dog(); 
     d.bark(); 
    } 
} 

我把这两个文件放在〜/ Desktop/test/src/com/greg/dog当我编译它们的时候,Dog.java编译没事,但TestDog.java找不到我的狗类:

[email protected]:~/Desktop/test/src/com/greg/dog$ javac Dog.java 
[email protected]:~/Desktop/test/src/com/greg/dog$ javac TestDog.java 
TestDog.java:6: cannot find symbol 
symbol : class Dog 
location: class com.greg.dog.TestDog 
     Dog d = new Dog(); 
     ^
TestDog.java:6: cannot find symbol 
symbol : class Dog 
location: class com.greg.dog.TestDog 
     Dog d = new Dog(); 
        ^
2 errors 

我在Ubuntu上,这里的所有Java信息:

java version "1.6.0_0" 
IcedTea6 1.3.1 (6b12-0ubuntu6.7) Runtime Environment (build 1.6.0_0-b12) 
OpenJDK 64-Bit Server VM (build 1.6.0_0-b12, mixed mode) 

任何想法我可能做错了什么?我需要导入Dog.java吗?我在做包错了吗?

更新

每匿名的建议下,我改变目录到src目录和一切编译。然而,当我去跑TestDog.java我得到这个错误:

[email protected]:~/Desktop/test/src$ java com/greg/dog/TestDog.java 
Exception in thread "main" java.lang.NoClassDefFoundError: com/greg/dog/TestDog/java 
Caused by: java.lang.ClassNotFoundException: com.greg.dog.TestDog.java 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:319) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:264) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332) 
Could not find the main class: com/greg/dog/TestDog.java. Program will exit. 

回答

9

Java编译器预计其他类是在包适当的目录相对于在编译器从调用。

你要使用的东西等编译:

[email protected]:~/Desktop/test/src$ javac com/greg/dog/Dog.java 
[email protected]:~/Desktop/test/src$ javac com/greg/dog/TestDog.java 
+0

感谢。编译都从该目录工作,但是当我去运行它时,我得到一个类未找到错误。查看更新。 – Greg 2011-01-24 03:40:10