2011-01-24 11 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の2つのファイルがあります。

私がそれらをコンパイルすると、Dog.javaがコンパイルされます。罰金だが、TestDog.javaは私の犬のクラスに見つけることができません:私はUbuntuの上だ

[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 

を、ここではすべての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

+1

@Greg: 'java com/greg/dog/TestDog'を試してみると、起動時に' .java'拡張子を付けたくありません。 –

+0

パーフェクト!ありがとう! – Greg

関連する問題