neo_fox Napisano Listopad 16, 2005 Zgłoszenie Share Napisano Listopad 16, 2005 Za każdym razem gdy próbuje odpalić program pisany w java poza Eclipse dostaje komunikat: Exception in thread "main" java.lang.NoClassDefFoundError: mainClass/class Przeszukałem już wszystko co możliwe i każde rozwiązanie problemu sprowadza się do zdefiniowania zmiennych PATH. Cóż zmieniałem je w te i we wte i nic nie pomaga. Ale mniejsza o to. Jeżeli załóżmy napisze jakiś program komercyjny i będę go chciał sprzedawać to jakoś nie wyobrażam sobie abym musiał klientom pisać dwutomowe dzieło na temat tego jak ten program zainstalować i jak skonfigurować system aby mój program chociaż uruchomić. A więc wydaje mi się że musze go jakoś skompilować do wersji finalnej. Po spakowaniu do archiwum jar, dokonaniu odpowiednich wpisów w manifestu i próbie uruchomienia takiego programu dostaje ten sam komunikat błędu. A więc co znowu pochrzaniłem ?? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
montresol Napisano Listopad 16, 2005 Zgłoszenie Share Napisano Listopad 16, 2005 Za każdym razem gdy próbuje odpalić program pisany w java poza Eclipse dostaje komunikat: Exception in thread "main" java.lang.NoClassDefFoundError: mainClass/class Moja szklana kula podpowiada mi, ze robisz cos takiego: java mainClass.class choc powinienes: java mainClass Przyznaje jednak, ze powodow tego komunikatu moze byc bez liku (uruchamianie, struktura programu - gdzie jest main, jakie pakiety, moze korzystasz z jar-ow, ktorych nie umiesciles w CLASSPATH, itp.). Ale mniejsza o to. Jeżeli załóżmy napisze jakiś program komercyjny i będę go chciał sprzedawać to jakoś nie wyobrażam sobie abym musiał klientom pisać dwutomowe dzieło na temat tego jak ten program zainstalować i jak skonfigurować system aby mój program chociaż uruchomić. Moze by tak klientowi instalator napisac? Kliknie sobie i juz, po bolu. Sa gotowe nawet, cross-platform zeby bylo smieszniej. Pozdrawiam, montresol Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
neo_fox Napisano Listopad 16, 2005 Autor Zgłoszenie Share Napisano Listopad 16, 2005 Za każdym razem gdy próbuje odpalić program pisany w java poza Eclipse dostaje komunikat: Exception in thread "main" java.lang.NoClassDefFoundError: mainClass/class Moja szklana kula podpowiada mi, ze robisz cos takiego: java mainClass.class choc powinienes: java mainClass Wiedziałem że to coś prostego - przyzwyczajenie do naciskania TAB w konsoli Moze by tak klientowi instalator napisac? Kliknie sobie i juz, po bolu. Nie nabijaj się kurcze ze mnie Sa gotowe nawet, cross-platform zeby bylo smieszniej. a mógłbyś podać jkieś przykłady? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
montresol Napisano Listopad 16, 2005 Zgłoszenie Share Napisano Listopad 16, 2005 Moze by tak klientowi instalator napisac? Kliknie sobie i juz, po bolu. Nie nabijaj się kurcze ze mnie Ech, nie to bylo moja intencja. Przeciez prosty skrypt .sh, .bat wiekszosc rzeczy juz zalatwia. JRE mozna rozprowadzac w swoim bundle wiec klopot ze sciaganiem i instalowaniem tego ustrojstwa na klienta maszynie jakby odpada. A jak chcemy juz konkretny wypas z instalatorkiem graficznym to jest tego na peczki (Google podpowiada: IzPack, VAInstall, FreeInstaller, Toolshed, JSmooth, Launch4J, Antigen). Zobacz jeszcze java-web-start bo to ciekawa technologia. Pozdrawiam, montresol Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
neo_fox Napisano Listopad 16, 2005 Autor Zgłoszenie Share Napisano Listopad 16, 2005 JRE mozna rozprowadzac w swoim bundle wiec klopot ze sciaganiem i instalowaniem tego ustrojstwa na klienta maszynie jakby odpada. Czyli, jeśli dobrze zrozumiałem, te biblioteki które wykorzystałem w programie trzeby dołączyć do pakietu? Sorry jeśli głupie pytanie ale w C takie biblioteki kompilują się razem z programem. A jak chcemy juz konkretny wypas z instalatorkiem graficznym to jest tego na peczki (Google podpowiada: IzPack, VAInstall, FreeInstaller, Toolshed, JSmooth, Launch4J, Antigen). Zobacz jeszcze java-web-start bo to ciekawa technologia. dzięki Trochę pokombinowałem i teraz mam tak: Exception in thread "main" java.lang.UnsupportedClassVersionError: mainClass (Unsupported major.minor version 49.0) 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) Jeśli dobrze rozumię to teraz po prostu nie znajduje bibliotek. Ale z tym to sobie chyba poradzę Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
montresol Napisano Listopad 16, 2005 Zgłoszenie Share Napisano Listopad 16, 2005 Czyli, jeśli dobrze zrozumiałem, te biblioteki które wykorzystałem w programie trzeby dołączyć do pakietu? Bingo! Wszystkie jary, z ktorych korzysta sie w swoim kodzie, umieszcza sie pozniej w dystybuowanym sofcie. Oczywiscie trzeba miec do nich prawa (licencje). Koniec koncow, typowy katalog naszego softu u klienta wyglada mnie wiecej tak: +-katalog_programu +- bin [skrypty startowe - bat, sh] +- lib [jary potrzebne do uruchomienia - thirdparty libraries] +- doc [dokumentacja, itp] +moj_program.jar Mozna dodatkowo umiescic katalog JRE z dystrybucji JAVY (przeczytaj licencje) - wtedy nie bedziemy musieli w skrypcie sprawdzac czy na kompie jest juz Java. Nie jest to moze eleganckie rozwiazanie ale najpewniejsze. Trochę pokombinowałem i teraz mam tak: Exception in thread "main" java.lang.UnsupportedClassVersionError: mainClass (Unsupported major.minor version 49.0) at java.lang.ClassLoader.defineClass0(Native Method) Jeśli dobrze rozumię to teraz po prostu nie znajduje bibliotek. Ale z tym to sobie chyba poradzę Nie, to nie to. Chodzi prawdopodobnie o to, iz kod masz skompilowany nowsza wersja javy a probujesz go uruchomic za pomoca starszej. Wersja 49.0 oznacza kompilacje w JDK1.5. Co zwraca tymczasem u Ciebie polecenie 'java -version'? Czy nie przypadkiem 1.4.2? Pozdrawiam, montresol Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
neo_fox Napisano Listopad 17, 2005 Autor Zgłoszenie Share Napisano Listopad 17, 2005 Co zwraca tymczasem u Ciebie polecenie 'java -version'? Czy nie przypadkiem 1.4.2? [radek@Sigsiu-Radek mensa]$ java -version java version "1.4.2_09" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_09-b05) Java HotSpot(TM) Client VM (build 1.4.2_09-b05, mixed mode) [radek@Sigsiu-Radek mensa]$ Czyli oczywiście miałeś rację. Ale ja już z tego nic nie rozumie. Instalowałem jre1.5.0 i mam też taki katalog /usr/java/jre1.5.0_04 Ja się chyba zastrzelę Próbowałem też skompilować mój program do kodu maszynowego przy pomocy gcj ale też wypluwa mnóstwo błędów Mozna dodatkowo umiescic katalog JRE z dystrybucji JAVY (przeczytaj licencje) - wtedy nie bedziemy musieli w skrypcie sprawdzac czy na kompie jest juz Java. Nie jest to moze eleganckie rozwiazanie ale najpewniejsze. Czyli jeżeli używam biblioteki swing to muszę ją dołączyć do kodu źródłowego ??!! Czy chodziło Ci raczej o takie biblioteki jak np: mysql-connector ?? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
montresol Napisano Listopad 17, 2005 Zgłoszenie Share Napisano Listopad 17, 2005 Czyli oczywiście miałeś rację. Ale ja już z tego nic nie rozumie. Instalowałem jre1.5.0 i mam też taki katalog /usr/java/jre1.5.0_04 Ja się chyba zastrzelę Wyglada na to, ze gdzies masz jeszcze jre1.4.2 i na te wersje wskazuje PATH. Trzeba zmienic. Mozesz tez jeszcze raz skompilowac zrodla za pomoca jdk1.4.2 (javac). Oczywiscie nie uda sie to, jesli w kodzie uzywasz rzeczy specyficznych dla javy 1.5 (np. genericsy). Kompilacje do wersji 1.4 mozesz wlaczyc tez w Eclipse - Project/Properties/Java Compiler/JDK compliance. Czyli jeżeli używam biblioteki swing to muszę ją dołączyć do kodu źródłowego ??!! Czy chodziło Ci raczej o takie biblioteki jak np: mysql-connector ?? Swing jest zawarty w JRE wiec jesli user ma juz zainstalowane JRE to nie musisz w dystrybuowanym sofcie umieszczac JRE. Oczywiscie zawsze warto to w skrypcie uruchamiajacym/instalacyjnym sprawdzic. Co innego w przypadku dodatkowych bibliotek, np. sterownikow do baz danych, ktorych (poza mostem jdbc-odbc) w JRE nie ma. Te ostatnie musisz (o ile pozwala oczywiscie na to ich licencja) umiescic w katalogu dystrybuowanego softu. Aha... i nie musisz dolaczac niczego do kodu zrodlowego (pliki .java) tylko do wersji skompilowanej (.class czy lepiej nawet .jar). PS> Korzystasz z jakiegos tutoriala/ksiazki? Rzeczy, o ktore pytasz w tym watku to podstawy. Polecam 'Thinking in Java' - do sciagniecia ze strony autora. Wkrotce pojawi sie czwarte wydanie. Pozdrawiam, montresol Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
neo_fox Napisano Listopad 17, 2005 Autor Zgłoszenie Share Napisano Listopad 17, 2005 Wyglada na to, ze gdzies masz jeszcze jre1.4.2 i na te wersje wskazuje PATH. kiedy właśnie że nie export PATH=/usr/java/jre1.5.0_04/bin:$PATH export JAVA_HOME=/usr/java/jre1.5.0_04 export CLASSPATH=.:/usr/java/jre1.5.0_04/ Swing jest zawarty w JRE wiec jesli user ma juz zainstalowane JRE to nie musisz w dystrybuowanym sofcie umieszczac JRE. Oczywiscie zawsze warto to w skrypcie uruchamiajacym/instalacyjnym sprawdzic. Co innego w przypadku dodatkowych bibliotek, np. sterownikow do baz danych, ktorych (poza mostem jdbc-odbc) w JRE nie ma. Te ostatnie musisz (o ile pozwala oczywiscie na to ich licencja) umiescic w katalogu dystrybuowanego softu. Aha... i nie musisz dolaczac niczego do kodu zrodlowego (pliki .java) tylko do wersji skompilowanej (.class czy lepiej nawet .jar). Czyli jednak tak jak w C PS> Korzystasz z jakiegos tutoriala/ksiazki? Rzeczy, o ktore pytasz w tym watku to podstawy. Polecam 'Thinking in Java' - do sciagniecia ze strony autora. Wkrotce pojawi sie czwarte wydanie. Z tej książki. Tyle tylko że ona koncetruje się na opisie języka. Z tym akurat nie mam najmniejszych problemów. Jak do tej pory udało mi się stworzyć dosyć rozbudowaną aplikację. Tyle tylko że poza eclipse nigdzie nie moge jej uruchomić Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
montresol Napisano Listopad 17, 2005 Zgłoszenie Share Napisano Listopad 17, 2005 export PATH=/usr/java/jre1.5.0_04/bin:$PATH export JAVA_HOME=/usr/java/jre1.5.0_04 export CLASSPATH=.:/usr/java/jre1.5.0_04/ Lepiej byloby chyba pokazac co zwraca 'echo $PATH'. Daj jeszcze 'java -verbose | grep Opened' to sie przekonamy gdzie ukrywa sie ta przekleta java. PS> Korzystasz z jakiegos tutoriala/ksiazki? Rzeczy, o ktore pytasz w tym watku to podstawy. Polecam 'Thinking in Java' - do sciagniecia ze strony autora. Wkrotce pojawi sie czwarte wydanie. Z tej książki. Tyle tylko że ona koncetruje się na opisie języka. A ta ksiazka nie uczy jak sie kompiluje z konsoli? Sciagnij JDK (nie JRE), napisz pod vimem prosty Hello World, skompiluj z konsoli za pomoca javac, uruchom za pomoca java. Jak sobie poradzisz to nie bedziesz mial problemow zeby powtorzyc to wszystko dla rozbudowanej aplikacji. Zobacz tez na ant - to javowy odpowiednik makefile'a. Pozdrawiam, montresol Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
neo_fox Napisano Listopad 17, 2005 Autor Zgłoszenie Share Napisano Listopad 17, 2005 Ok, serdeczne dziękuję Ci za wszelką pomoc. Na razie muszę sobie zrobić przerwę z Java bo już żona mi marudzi że nic innego nie robię Ale muszę przyznać że to fascynujący język PS: [radek@Sigsiu-Radek mensa]$ echo $PATH /usr/java/jre1.5.0_04/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X1 1R6/bin:/home/radek/bin [radek@Sigsiu-Radek mensa]$ Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
przemk Napisano Listopad 18, 2005 Zgłoszenie Share Napisano Listopad 18, 2005 Ale muszę przyznać że to fascynujący język Hmm, mam podobne odczucie jak dla mnie to najciekawsze jest to, ze im dalej w las to jeszcze bardziej podoba mi sie Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
rzabcio Napisano Listopad 18, 2005 Zgłoszenie Share Napisano Listopad 18, 2005 Bardzo trudno się nie zgodzić. Generalnie Java jest językiem wysokiego poziomu, w którym abstrakcja sięga szczytów. Programując w Javie nie zajmuję się, że tak ujmę - pierdolami tylko implementuję konkretne zagadnienie, rozwiązuję konkretny problem. Dla przykladu zwyczajne polączenie HTTP - nie muszę przejmować się otwieraniem gniazd (nie znam się zbyt dobrze ale chyba jest tak w C++, może ktoś mnie poprawi ) lecz używam gotowego obiektu HttpUrlConnection, ustawiam naglowki żądnia i wszystko to, co faktycznie mnie interesuje! Znajomym powtarczam zawsze jedno zdanie: Java jest jak klocki Lego - wszystko jest gotowe a zadaniem programisty jest "tylko" poskladać to wszystko do kupy. Mówię Wam, to daje niesamowitą frajdę. A jeszcze lepszą jak otrzymany kod jest elegancki i przejrzysty tak, że osoba, która pierwszy raz patrzy w taki kod od razu wiedziala o co chodzi. Z doświadczenia wiem, że nie jest to tak przyjemne np. w .NETcie... 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ę