Kiedy pisze jakikolwiek aplet w języku java to wyskakuje mi okno apletu, ale nic w nim nie ma tylko napis Start applet not initlialized z czym może być problem?Najśmieszniejsze w tym że aplety z książek o javie gdzie tylko wystarczy przepisać też wyskakuje Start applet not initlialized.
Będę bardzo wdzięczny za porady.
Popularne przeglądarki maja konsolę Javy, otwórz ją. Tak będą dokładne komunikaty o przyczynach niepowodzenia.
W komunikacie takie coś mi napisało:
Java Plug-in 1.6.0_20
Using JRE version 1.6.0_20-b02 Java HotSpot(TM) Client VM
c: clear console window
f: finalize objects on finalization queue
g: garbage collect
h: display this help message
l: dump classloader list
m: print memory usage
o: trigger logging
q: hide console
r: reload policy configuration
s: dump system and deployment properties
t: dump thread list
v: dump thread stack
x: clear classloader cache
0-5: set trace level to <n>
load: class was.class not found.
java.lang.ClassNotFoundException: was.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: C:\Users\Artur\was\class.class (System nie może odnaleźć określonej ścieżki)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 7 more
Exception: java.lang.ClassNotFoundException: was.class
Caused by: java.io.FileNotFoundException: C:\Users\Artur\was\class.class (System nie może odnaleźć określonej ścieżki)
Aplet nie powinien odczytywać lokalnych plików (bez specjalnych zabiegów ze strony twórcy apletu i zgody użytkownika nie może ich czytać). Pokaż jak umieszczasz aplet w pliku html i skąd się wziął w aplecie ten
C:\Users\Artur\was\class.class
fragment
Aplet umieszczam w następujący sposób zgodnie ze wskazówką z książki o Javie
Kod html wygląda następująco:
Wygląda, że jest w porządku, ale to jest odpowiedź tylko na pierwsze pytanie.
Jakiej przeglądarki używasz do otwarcia apletu ?? Wydaje mi się, że Opera nie pozwala na uruchamianie apletów z dysku twardego. Spróbuj IE lub Mozilla bądź umieść plik na serwerze.
@up, tylko Ci się wydaje.
Po pierwsze jeżeli klasa apletu jest przypisana konkretnemu pakietowi - np. pakiet, to loader klasy dla przeglądarki oczekuje iż ścieżka będzie zaczynała się od katalogu o nazwie tego pakietu. Np. pakiet/aplet.class. Z kolei niektóre przeglądarki w ogóle nie ładują apletów będących w pakiecie domyślnym. Czyli oznacza to, że nie da się wtedy załadować apletu wprost z roota serwera www lub tego co jest za niego uznawane przez lokalną przeglądarkę.
Olamagato napisał(a)
Po pierwsze jeżeli klasa apletu jest przypisana konkretnemu pakietowi - np. pakiet, to loader klasy dla przeglądarki oczekuje iż ścieżka będzie zaczynała się od katalogu o nazwie tego pakietu. Np. pakiet/aplet.class. Z kolei niektóre przeglądarki w ogóle nie ładują apletów będących w pakiecie domyślnym. Czyli oznacza to, że nie da się wtedy załadować apletu wprost z roota serwera www lub tego co jest za niego uznawane przez lokalną przeglądarkę.
Bo ja mam tak plik PierwszyAplet.html w nim łącze do pliku class czyli jak wiem jest to plik java który jest zapisany jako PierwszyAplet.java.
Czyli ja już nie wiem co źle zrobiłem?
Spróbuj umieścić plik html ładujący swój aplet w katalogu powyżej tego w którym znajduje się plik .class, a odwołanie do nazwy apletu w atrybucie code poprzedź nazwą katalogu w którym plik class faktycznie występuje. Nie gwarantuję, tego że to zadziała, ale jest to prawdopodobne. Dla upewnienia się czy tak jest wrzuć do kodu apletu w metodzie init instrukcję wyrzucającą na konsolę wynik metody getCodeBase(), która dla ładowarki klas przeglądarki oznacza właśnie korzeń drzewa katalogów na serwerze z którego html włączający ten aplet jest pobierany. Czasem może okazać się potrzebne rozwinięcie tego wyniku na postać ścieżki kanonicznej (unikalna i absolutna). Dzięki temu dowiesz się gdzie rozpoczyna się szukanie pliku klasy przez loadera.
Już działa błąd był banalny, chwila nie uwagi i może być po projekcie, dziękuję wszystkim za rady:)