Я пытаюсь научиться создавать и использовать пакеты на Java.Я экспериментировал со следующей программой «Hello World»
class helloWorld
{
public static void main (String[] args)
{
System.out.println("Hello World");
}
}
Когда я компилирую и запускаю эту программу в ее домашнем каталоге, все в порядке.Тем не менее, когда я создаю подкаталог - ./testPackage и помещаю в него следующий файл (hiEarth.java):
package testPackage;
class hiEarth
{
public static void main (String[] args)
{
System.out.println("Hi Earth");
}
}
Я могу его скомпилировать, но не могу запустить.
me@ubuntu:~/Projects/JavaProjects/helloWorld/testPackage$ javac hiEarth.java
me@ubuntu:~/Projects/JavaProjects/helloWorld/testPackage$ java hiEarth
Exception in thread "main" java.lang.NoClassDefFoundError: hiEarth (wrong name: testPackage/hiEarth)
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)
Could not find the main class: hiEarth. Program will exit.
когда я делаю 'ls
', я вижу то, что ожидаю увидеть:
me@ubuntu:~/Projects/JavaProjects/helloWorld/testPackage$ ls
hiEarth.class hiEarth.java
Почему я не могу заставить java увидеть класс в настоящемкаталог?
Когда я перемещаю на один каталог выше:
me@ubuntu:~/Projects/JavaProjects/helloWorld/testPackage$ cd ..
me@ubuntu:~/Projects/JavaProjects/helloWorld$ java testPackage/hiEarth
Все работает нормально.Я думал, что это может быть проблема с classpath, но
me@ubuntu:~/Projects/JavaProjects/helloWorld/testPackage$ java -cp . hiEarth
тоже не работает.Что я здесь не понимаю?
Спасибо ....