2010-06-21 12 views
10

stworzyłem plik o nazwie "Hello.java", który wygląda tak:Dlaczego nie mogę uruchomić mojego programu Hello Hello na świecie, jeśli znajduje się on w pakiecie?

public class Hello { 
     public static void main(String[] args) { 
       System.out.println("Hello, world!"); 
     } 
} 

wpadłem javac Hello.java, następnie java Hello, i wszystko działało zgodnie z oczekiwaniami.

Następnie dodałem linię package testpackage; na górze pliku i umieściłem ją w katalogu /home/matthew/Desktop/hellotest/testpackage. Włączyłem .:/home/matthew/Desktop/hellotest w moim CLASSPATH i skompilowałem i uruchomiłem w taki sam sposób jak poprzednio. Ale teraz dostaję ten błąd:

[email protected]:~/Desktop/hellotest/testpackage$ java Hello 
Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong name: testpackage/Hello) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334) 
Could not find the main class: Hello. Program will exit. 

Dlaczego to działa samodzielnie, ale nie w pakiecie?

+3

java testpackage.Hello –

Odpowiedz

16

Teraz jest on w testpackage, jego nazwa jest naprawdę testpackage.Hello. Przejdź do katalogu i wykonaj na tym java.

13

iść jeden katalog i uruchom:

java testpackage.Hello 
2

Wypróbuj java testpackage.Hello.

Ponieważ jest to w ścieżce klas, powinieneś być w stanie uruchomić go z dowolnego katalogu roboczego, ale odnieść się do niego po jego pełnej nazwie.

Powiązane problemy