sufli Napisano Sierpień 4, 2006 Zgłoszenie Share Napisano Sierpień 4, 2006 na wstepie chcialem zaznaczyc ze jestem poczatkujacy, zainstalowalem jave moge nawet skompilowac program ale nie udaje mi sie go odpalic w terminalu wyskakuje taka komenda: "[root@localhost Desktop]# java HelloWorld.java Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld.java at gnu.java.lang.MainThread.run (libgcj.so.7) Caused by: java.lang.ClassNotFoundException: HelloWorld.java not found in gnu.gc j.runtime.SystemClassLoader{urls=[file:./], parent=gnu.gcj.runtime.ExtensionClas sLoader{urls=[], parent=null}} at java.net.URLClassLoader.findClass (libgcj.so.7) at java.lang.ClassLoader.loadClass (libgcj.so.7) at java.lang.ClassLoader.loadClass (libgcj.so.7) at java.lang.Class.forName (libgcj.so.7) at gnu.java.lang.MainThread.run (libgcj.so.7) co z tym zrobic zeby dzialalo? prosze o pomoc z gory dzieki Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
rzabcio Napisano Sierpień 4, 2006 Zgłoszenie Share Napisano Sierpień 4, 2006 Kompilacja: # javac HelloWorld.java Uruchomienie: # java HelloWorld (Bez .class !!!) Nie korzystaj z gcj! Co to w ogóle za jakaś plaga jest?!?! Tylko sunowskie SDK! Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Sanczo Napisano Sierpień 4, 2006 Zgłoszenie Share Napisano Sierpień 4, 2006 Do nauki javy polecam NetBeans IDE http://www.netbeans.org/index.html - nie ma nic lepszego Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
lszk Napisano Sierpień 5, 2006 Zgłoszenie Share Napisano Sierpień 5, 2006 Ja nie programuje w javie, ale ciekawi mnie, jak właściwie kompilować/uruchamiać programy w niej napisane? Przykładowo kod z http://forum.fedora.pl/index.php?showtopic=10889 [15:48][~/programowanie/java/1] [lszk@fedora]$ /usr/java/j2sdk1.4.2_12/bin/javac Main.java Kalkulator.java [15:48][~/programowanie/java/1] [lszk@fedora]$ /usr/java/j2sdk1.4.2_12/bin/java Main Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: kalkulator/Main) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:539) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123) at java.net.URLClassLoader.defineClass(URLClassLoader.java:251) at java.net.URLClassLoader.access$100(URLClassLoader.java:55) at java.net.URLClassLoader$1.run(URLClassLoader.java:194) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) [15:48][~/programowanie/java/1] [lszk@fedora]$ /usr/java/j2sdk1.4.2_12/bin/java Kalkulator Exception in thread "main" java.lang.NoClassDefFoundError: Kalkulator (wrong name: kalkulator/Kalkulator) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:539) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123) at java.net.URLClassLoader.defineClass(URLClassLoader.java:251) at java.net.URLClassLoader.access$100(URLClassLoader.java:55) at java.net.URLClassLoader$1.run(URLClassLoader.java:194) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) [15:48][~/programowanie/java/1] [lszk@fedora]$ Niby się kompiluje, ale jak toto uruchomić? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Sanczo Napisano Sierpień 6, 2006 Zgłoszenie Share Napisano Sierpień 6, 2006 Hmm wbrew pozorom to nie jest taka hop siup prosta sprawa Najlepiej wrzuc ten kod do NetBeans'a, w nowym projekcie. Kazda klase public w osobnym pliku, czyli osobno Main i Kalkulator. Jesli wszystko zrobiles to wystarczy wcisnac F6 "run" i powinno dzialac. Do tego dostajesz w katalogu <sciezka do katalogu projektu>/dist archiwum jar ktory mozesz odpalic spod konsoli piszac: java -jar <plik.jar> Jesli chcesz wszystko od zera majac tylko zrodla skompilowac i odpalic spod konsoli, to to powinno ci (_pomuc_ → pomóc) ORT: http://one-jar.sourceforge.net/ man java man javac - jest tu jakies howTo Mnie nie udalo sie jeszcze tego dokonac bez ide, ale jak ci sie uda to skrobij o tym na forum. pozdro Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
rzabcio Napisano Sierpień 7, 2006 Zgłoszenie Share Napisano Sierpień 7, 2006 Ja nie programuje w javie, ale ciekawi mnie, jak właściwie kompilować/uruchamiać programy w niej napisane? Przykładowo kod z http://forum.fedora.pl/index.php?showtopic=10889 # /usr/java/j2sdk1.4.2_12/bin/javac Main.java Kalkulator.java # /usr/java/j2sdk1.4.2_12/bin/java Main Niby się kompiluje, ale jak toto uruchomić? Krótka piłka. Klasa znajduje się w pakiecie kalkulator - pierwsza linia kodu. Pokazuje to błąd: Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: kalkulator/Main) mówiący tyle co: "zapewne nie chodziło Ci o klasę, którą znalazłem (Main.class) ponieważ Ty miałeś na myśli klasę bez pakietu (Main) a ja znalazłem klasę z tą samą nazwą jednak w pakiecie kalkulator (kalkulator.Main)". Rozwiązanie jest proste. Po skompilowaniu należy umieścić pliki .class w podkatalogu ./kalkulator, wyjść z tego katalogu i uruchomić: # java kalkulator.Main co oznacza uruchom klasę Main z pakietu kalkulator. Suma sumarum trzeba więc pamiętać, że pakiet jest synonimem katalogu. Generalnie kompiluje się po prostu wszystko, przenosząc wynik do innego katalogu (opcja -o komendy javac). Przeważnie stosuje się podział na kody w katalogu src, natomiast pliki .class w bin. Tak robi np. Eclipse. NetBeans również jakoś podobnie. Pewnie ktoś spyta - po co całe te pakiety? Niech spróbuje zapanować nad kodem aplikacji, która składa się z kilkuset klas. Co się robi dość często biorąc pod uwagę strukturę języka i jego obiektowość, co powoduje rozkładanie kodu na jak najmniejsze składowe oparte o interfejsy. Z drugiej jednak strony - w takich projektach raczej nikt nie bawi się javac. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Sanczo Napisano Sierpień 7, 2006 Zgłoszenie Share Napisano Sierpień 7, 2006 rzabcio u mnie poszlo. Zszedlem katalog wstecz i odpalilem: devil@oaza /classes$ ls kalkulator/ meta-inf/ devil@oaza /classes$ ls kalkulator/ Action.class Kalkulator.class Main.class devil@oaza /classes$ java kalkulator.Main I dziala. Brakowalo mi jednego szczegolu tutaj, dzieki Jeszcze jedno pytanie: jak teraz to wrzucic recznie do jar'a tak zeby dalo rade odpalic przez java -jar nazwa.jar ? Bo u mnie ciagle nie widzi klasy Main: devil@oaza /classes$ jar cf arch.jar -m meta-inf/manifest.mf kalkulator/*.class devil@oaza /classes$ java -jar arch.jar Exception in thread "main" java.lang.NoClassDefFoundError: Main ps. meta-fm potrzebny tylko do jar. manifest.mf: manifest-Version: 1.0 Created-By: 1.4.2_02 (Sun Microsystems Inc.) Main-Class: Main pozdro Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
rzabcio Napisano Sierpień 7, 2006 Zgłoszenie Share Napisano Sierpień 7, 2006 meta-fm potrzebny tylko do jar. manifest.mf: manifest-Version: 1.0 Created-By: 1.4.2_02 (Sun Microsystems Inc.) Main-Class: Main A nie czasem tak? Main-Class: kalkulator.Main Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Sanczo Napisano Sierpień 7, 2006 Zgłoszenie Share Napisano Sierpień 7, 2006 Ok, lol z mojej strony Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się