Ljudi hvala vam na pokusaju da mi pomognete, ali izgleda da sam pronasao uzrok problema, ali u isto vreme su mi se pojavile i nove nejasnoce.
Evo primera mojih klasa:
-Klasa A nalazi se u folderu c:\a1
Code:
package a1 ;
public class A {
public int javnoPolje;
public static void main(String[] args) {
}
public String maliMetod() {
return "a a a a a a a a ";
}
}
-Klasa B nalazi se u folderu c:\a2
Code:
package a2;
import a1.*;
public class B extends A {
public static void main(String[] args) {
B x = new B();
x.mojMaliMetod();
}
public void mojMaliMetod() {
System.out.println("B kaze, " + this.maliMetod() + " " + javnoPolje);
System.out.println("B kaze, " + maliMetod());
A z = new A();
System.out.println("A kaze, " + z.maliMetod() + " " + z.javnoPolje);
}
public String maliMetod() {
return " b b b b b b b ";
}
}
Problem sam prevazisao na sledeci nacin:
Code:
C:\>javac a2\*.java
C:\>javac a1\*.java
C:\>java a2.B
B kaze, b b b b b b b 0
B kaze, b b b b b b b
A kaze, a a a a a a a a 0
Ali kada uradim ovako javlja mi se greska:
Code:
C:\>javac a2\*.java
C:\>javac a1\*.java
C:\>cd a2
C:\a2>java B
Exception in thread "main" java.lang.NoClassDefFoundError: B (wrong name: a2/B)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
A posto koristim NetRexxJe, JEdit plugin za kompajliranje i pokretanje klasa, koji za pokretanje klasa koristi naredbu javaw, na ekranu mi se pojavljuje sledece upozorenje
Isto upozorenje mi se javlja kada i ja u cmd-u upotrebim komandu:
Code:
C:\a2>javaw B.
E sada, za JEdit je ocigledno da moram pronaci pravi nacin da upotrebim odgovarajuce argumente prilikom kompajliranja i pokretanja, ali ono sto ne razumem je sta to JVM izgubi kada udjem u paket a2 i odatle direktnom komandom
C:\a2>java B
pokusam da pokrenem klasu B.
Zapravo u cemu je sustina, koju informaciju JVM poseduje ako pokretanje vrsim iz korenog direktorijuma(C:\>java a2.B) a istu izgubi ako udjem u folder a2( C:\a2>) ??????????
P.S.
Za nekog koga privuce ova tema evo i ukratkog objasnjenja javaw.exe programa:
The javaw.exe command is identical to java.exe, except that with javaw.exe there is no associated console window. This implies you can't get it to display the version with -version since there is no console to display it on. Use javaw.exe when you don't want a command prompt window to appear. The javaw.exe launcher will, however, display a dialog box with error information if a launch fails for some reason.
[Ovu poruku je menjao ZakMMM dana 01.08.2006. u 12:29 GMT+1]
[Ovu poruku je menjao ZakMMM dana 02.08.2006. u 10:06 GMT+1]