Я сделал очень простой пример 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 S хорошо, но 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? Я неправильно делаю пакеты?
Update
предложение Per Анон, я изменил в каталог, 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.
Спасибо. Компиляция работала из этого каталога, но когда я запускаю ее, я получаю ошибку класса, не найденную. См. Обновление. – Greg
@Greg: Вы не хотите иметь расширение '.java' при запуске - попробуйте' java com/greg/dog/TestDog'. –
Отлично! Благодаря! – Greg