Mam klasę:
package paczka;
public class Na {
String nazwa = "@";
int liczba = 1;
public void drukDanych() {
System.out.println("nazwa: " + nazwa + "\n" +
"liczba: " + liczba);
}
}
Kompiluję Na.java – jest OK.
Dodaje kolejną z main:
package paczka;
public class De {
public static void main(String[] args) {
Na naO = new Na();
naO.drukDanych();
System.out.println(naO.toString());
}
}
kompiluję De.java i nie jest OK:
De.java:6: error: cannot find symbol
Na naO = new Na();
^
symbol: class Na
location: class De
De.java:6: error: cannot find symbol
Na naO = new Na();
^
symbol: class Na
location: class De
2 errors
Słowem: czemu nic mi nie daje wspólny nagłówek package paczka?
Plik z obiema klasami kompiluje się, ale uruchumienie wywala:
Exception in thread "main" java.lang.NoClassDefFoundError: De (wrong name: paczka/De)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Wszystko gra, gdy zakomentuję package paczka.
Dyletanckie pytanie poczatkującego: dlaczego te pliki się nie widzą? Jak używać package?