Eee... czy wszystko jest w porządku ?

0

Witam, zacząłem na święta bawić się z Javą i mam małe pytanie:

Ściągnąłem J2SE 1.4.2 i NetBeans IDE 3.5.1. Postępowałem według artykułu
żeby stworzyć pierwszy program HelloWorld ;-)

Kiedy kompiluje go w NetBeans IDE, wyskakuje błąd:
java.lang.NoClassDefFoundError: HelloWorld
Exception in thread "main"

Postanowiłem taki plik odpalić z wiersza poleceń:
java HelloWorld.class - niestety pojawiło się to samo:
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class

Dopiero kiedy napisałem:
java HelloWorld - uruchomił się ten (nie wiem jak to nazwać) program
i wyświetlił na ekranie HelloWorld

O co biega ?

0

nie podałeś ścieżki :)
Najlepszy chyba sposób odpalania to odpalać z katalogu z programem podając pełną ścieżkę do java.exe (chyba, że masz w ścieżce wyszukiwania). Ja generalnie używam JBuilder'a i nie mam wtedy żadnych problemów (chociaż czasem taki komunikat otrzymywałem, ale z kompletnie innego powodu :P )

0

nie podałeś ścieżki :)

hmmm..... wykonałem testy które przedstawiają
się co najmniej dziwnie... :-D

C:>"C:\WINDOWS\system32\java.exe" C:\HelloWorld.class
Exception in thread "main" java.lang.NoClassDefFoundError: C:\HelloWorld/class

C:>"C:\WINDOWS\system32\java.exe" C:\HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: C:\HelloWorld

C:>"C:\WINDOWS\system32\java.exe" HelloWorld
Hello World

C:>

Zadziałało tylko za 3 razem, jak to interpretować ?

0

Uruchamiac za pomoca bat'a:
c:...\java.exe %1

uruchom.bat HelloWorld
:P
A swoją drogą, to java.exe powienieneś mieć też w katalogu z javac i innymi (czyli raczej nie system32 :) )

0

Trzeba dodac katalog biezacy do CLASSPATH i po problemie.

y.

0

CLASSPATH to zmienna środowiskowa Windowsa czy coś w NetBeans IDE czy w Javie ?

tak sobie pomyślałem że dziwnym trafem w tym artykule
od HelloWorld zachodzi taka sama prawidłowość, tzn
przy kompilacji jest podany plik z rozszerzeniem
(javac HelloWorld.java) a później do uruchomienia jest
już bez niego (java HelloWorld) może tak ma być ? [glowa]

// tak, tak ma być - ŁF

0

classpath to parametr podawany przy wywołaniu z linii poleceń. Wpisz java -h i będziesz wiedział co i jak (chociaż akurat nie znalazłem tam wyszczególnienia czy .class trzeba dopisywać czy nie).

0

ustaw sobie zmienne srodowiskowe tak jak napisali na java.sun.com
wejdz za pomoca konsoli w katalog ze zrodelkiem i ort!....wydaje mi sie ze instalacja j2sdk i obsluga są stosunkowo proste, a zwlaszcza pod XP ze wzgledu na łatwość dodawania zmiennych srodowiskowych...
kompilujesz podając pelna nazwe pliku z zrodlem, a uruchamiasz podajac jedynie nazwe klasy czyli nazwe pliku bez rozszerzenia :)

PS: na java.sun.com jest pelno instrukcji na kazdy system... tutoriale i dokumentacje i <ort>w ogóle </ort>wszystko-mozna sciagac ale ja wole korzystać on-line- <ort>zaduzo </ort>to zajmuje :)

0

Dziękuję serdecznie za wyjaśnienia....
Kamień spadł mi z serca, upatrywałem w tym jakichś błędów,
jeżeli tak ma być to OK ale idąc dalej:

W NetBeans IDE mogę skompilować HelloWorld ale nie mogę go uruchomić
przez Execute, bo kiedy to zrobię to wywala coś takiego
okienko Output Window [HelloWorld - I/O]:

java.lang.NoClassDefFoundError: JavaTest/HelloWorld (wrong name: HelloWorld)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
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)
Exception in thread "main"

HelloWorld mogę uruchomić tylko z Wiersza poleceń, natomiast kiedy w NetBeans
zrobię program z formą (JFrame Form) to wtedy mogę go uruchomić przez Execute
i pokazuje się ładna forma ale nie mogę z wiersza poleceń, bo w tedy wyświetlają
się w Wierszu poleceń błędy których nie wkleję bo są dokładnie takie same jak
te z okienka [HelloWorld - I/O] w poprzednim przypadku. Właściwie jedyne co działa
mi zawsze to aplety na www, czy to też jest normalne ?

W takim razie moje ostateczne pytanie brzmi:

Jak uruchomić Javowski program z formą nie za pośrednictwem NetBeans IDE ?
Da się zrobić jakiś EXE który zainicjuje otwarcie programu w Javie ?

No i przepraszam za to że tak uparcie męczę w tym wątku, po prostu
przywykłem do tego że jak coś jest EXE to się uruchamia zawsze i wszędzie ;-)

0

zauważ, że Twoje problemy dotyczą uruchamiania kodu, a konkretniej nazwy pliku do uruchomienia. plik nazwa.class uruchamia się poprzez java nazwa, a z wklejonego opisu błędu wynika, że uruchamiane jest coś innego.

btw - ja piszę kod w Gel'u i tam nie mam takich problemów.

0

btw - ja piszę kod w Gel'u i tam nie mam takich problemów.

No cóż, ściągnąłem ten Gel i jakoś wszystko świetnie działa
i uruchamia się bez problemu z wiersza poleceń...

Dziękuje serdecznie za wskazanie odpowiedniego produktu...
Szkoda tylko, że nie ma trybu wizualnego tworzenia aplikacji...
// zawsze coś za coś... - ŁF

0

"przywykłem do tego że jak coś jest EXE to się uruchamia zawsze i wszędzie "

  • w jakiej bajce to widziałeś??????
    Java odchodzi od koncepcji plikow typu exe - binarnych na rzecz plikow pol binarnych dzięki czemu naprawde wszedzie mozna uruchomic program z rozszerzeniem *.class (na linuxach, windowsach, oracle... i nie wiem co tam jeszcze....komorkach), wystarczy zainstalowac na systemie jre, ktore jest dostepne pod wiele platform i hula.
    Powodzenia Piechnat...

// a co to za system operacyjny, ten Oracle? :-D - ŁF

1 użytkowników online, w tym zalogowanych: 0, gości: 1