Podpisany applet działa lokalnie, na stronie już nie.

0

Bawię się ostatnio appletami w Javie (projekt na uczelnię skończony, to się można bawić :P) i mam mały problem.

Dodałem do swojego appletu przycisk, który służy do zapisywania pliku tekstowego z pobranymi informacjami wpisanymi w pewnych polach aplikacji na dysk użytkownika. Dowiedziałem się, że trzeba było stworzyć klucz za pomocą keytool, stworzyć paczkę .jar z plików programu, dopisać własny certyfikat do paczki .jar.

Zrobiłem to w ten sposób:

keytool -genkey -keyalg RSA -alias KluczZiela -keystore keystore.jks

wpisałem hasła i stworzył się.
Następnie dopisałem za pomocą jarsigner certyfikat do paczki .jar

jarsigner -keystore keystore.jks SkladanieDruzyny.jar KluczZiela

I wszystko pięknie, teraz wrzucam to do jednego folderu i dorzucam plik html wyglądający tak:

<html>
<title> Stwórz własną drużynę </title>
<body>
<applet code="druzyna.OknoGlowne.class" archive="SkladanieDruzyny.jar" width="800" height="1000">
</applet>
</body>
</html>

Zapisuję i klikam dwukrotnie, FireFox się uruchamia, applet się ładuje, wszystko działa, jestem z siebie dumny. Ładuję to na FTP, wpisuję link i niestety:

[code]
load: class druzyna.OknoGlowne.class not found.
java.lang.ClassNotFoundException: druzyna.OknoGlowne.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.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)
Exception: java.lang.ClassNotFoundException: druzyna.OknoGlowne.class
[/code]

Jeśli chodzi o strukturę pliku .jar to jest w nim folder 'druzyna', który jest paczką tego programu i w nim są pliki class. Między innymi OknoGlowne.class.

Czy ktoś może mi podpowiedzieć co robię nie tak? Może źle stworzyłem .jar'a? Utworzyłem go za pomocą środowiska Eclipse (prawy na projekt i eksport).

Przydałoby się na tym forum nieco porządku zrobić, albo jakieś FAQ bo znaleźć tu coś konkretnego jest nieco ciężko.

Pozdrawiam, Zielu.

ps. dla zainteresowanych mogę jeszcze podać nawet link do tego appletu: http://stud.ics.p.lodz.pl/~zielinskip/program/wybor.html

0

Exception: java.lang.ClassNotFoundException: druzyna.OknoGlowne.class

Trudno o jaśniejszy komunikat.

<html>
<title> Stwórz własną drużynę </title>
<body>
<applet code="druzyna.OknoGlowne" archive="SkladanieDruzyny.jar" width="800" height="1000">
</applet>
</body>
</html>
0

Wiesz, po takim czasie na studiach umiem czytać komunikaty. Rozumiem, że nie może znaleźć klasy głównej, która służy do odpalenia programu.

Ale nie mogę pojąć z jakiej przyczyny dlaczego tak się dzieje, skoro gdy mam te pliki na komputerze u siebie, odpalam plik .html i to się uruchamia, a po wrzuceniu na ftp, nie, chociaż jest to ustawione w takiej samej konfiguracji (znaczy, że pliki są w takim samym ustawieniu w folderze, wszystkie w tym samym).

edit:

nie zauważyłem Twej zmiany, zaraz spróbuję to wprowadzić, ale pozostaje pytanie 'dlaczego?'.

edit 2:

Po zmianie mam teraz komunikat uderzająco podobny...

load: class druzyna.OknoGlowne not found.
java.lang.ClassNotFoundException: druzyna.OknoGlowne
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.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)
Exception: java.lang.ClassNotFoundException: druzyna.OknoGlowne
0

edit: rzucę okiem na tą stronkę

0
Shalom napisał(a)

Jak to "dlaczego"? A umiesz uruchomić program w javie z konsoli? Chyba nie, skoro nie wiesz ze podaje sie nazwę bez .class

Tylko problemem głównym jest to, czemu to na komputerze u mnie działa, jak sobie kliknę na plik .html? Czyżby Java nie wiedziała, że tak nie powinno zadziałać?

A i jeszcze jedno tu macie dostęp do tego programu jakby ktoś potrzebował: http://stud.ics.p.lodz.pl/~zielinskip/program/

0

W pliku jar nie ma tej klasy, u Ciebie na komputerze jest plik class, z którego korzysta przeglądarka, na serwer pliku class nie wrzuciłeś.

0

Przyjrzyj się dobrze co napisałem. Na serwer wrzuciłem paczkę .jar i w niej znajduje się ten plik. Jestem pewien tego w 100% sam sprawdź.

0

Nazwa archiwum wymieniona w aplecie: SkladanieDruzyny.jar
rzeczywista nazwa archiwum: skladanieDruzyny.jar

0

Prawie się zastrzelić chciałem...

Dzięki Ci bardzo, heh... Szkoda tylko, że odpalanie na lokalnym sprzęcie nie jest tak restrykcyjne jak na serwerze... Co za upierdliwość, szukanie błędu który jest gdzie indziej niż się spodziewać, przypomina mi się Assembler.

Dzięki wielkie!

0

Zależy od użytego narzędzia, w Operze nie odpala się również lokalnie.

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