Aplet nie działa w przeglądarce

0

Witam
Napisałem sobie gierkę sieciową w Eclipse. Gdy uruchamiam klientów jako aplety z Eclipsa lub poprzez appletviewer strona.html to działa, natomiast jak wrzucę na serwer lub jeśli po prostu kliknę i otworzę plik strona.html to nie działa-tzn załaduje się wszystko cacy, ale nie widać grafik, a przyciski pojawiają się dopiero po najechaniu na nie myszą.
Najprostszy aplet również próbowałem osadzić na stronie i to samo- przez appletviewer chodzi a jak otworze stronę to nie.

Mój plik html:

<html>
<body>
<applet width="900" height="620" code="Aplet.class" archive="Aplet.jar" >
</applet>

<body>
</html>

Ma ktoś na to radę?
Dzięki

0

kończące body nie powinno być z płotkiem? </body>

0

Powinno, poprawiłem, ale nadal to samo. W momencie uruchomienia strony JVM obciąża procesor do ponad 50% tak jakby sie przywiesiło i po kliknięciu na inną zakładkę w przeglądarce i po powrocie do apletu w tym miejscu jest zapamiętany obraz tamtej strony.

0

Tak się zachowuje gierka sieciowa, czy również ten najprostszy aplet?

0

Otwórz sobie w przeglądarce Java Console i od razu będziesz miał odpowiedź co jest przyczyną. Najczęściej rzucany jest wyjątek NoClassDefFoundError, który informuje, że przeglądarka nie mogła załadować klasy z jara (zwykle z powodu classpath/manifestu). To jeden z najpopularniejszych tematów dotyczących apletów Javy, więc wystarczy użyć wyszukiwarki aby znaleźć rozwiązanie.

0

Prosty aplet również. Włączyłem Java Console no i jest wyjątek:

java.security.AccessControlException: access denied (java.io.FilePermission C:\Users\admin\workspace\Proby\bin read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
......

0

Wszystko jasne. Z apletu próbujesz otwierać plik lokalny, co właściwie przeczy zastosowaniu apletu. Musisz albo aplet podpisać, albo zrezygnować z dostępu plików innych niż te z serwera na którym leży aplet (wszystkie dostępy przez URL).

0

No właśnie chodzi o to, że nie jest to takie jasne, przynajmniej dla mnie, bo kod apletu to:

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.SwingUtilities;

public class Aplet extends JApplet {
	
	private static final long serialVersionUID = 1L;
	
	@Override
	public void init() {
		try {
			SwingUtilities.invokeAndWait(new Runnable() {
				public void run() {
					add(new JButton("Button"));
				}
			});
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}

Czyli nic nie robię, a i tak nie działa.
A pobieranie np. grafik z pliku *.jar w którym są klasy też jest odwołaniem zabronionym?

0
  1. Z pliku jar możesz czytać wszystko.
  2. Aplet, który zamieściłeś musi działać. Czy jesteś pewien, że właśnie ten aplet uruchamiasz? Po skompilowaniu kolejnej wersji apletu nie wystarczy odświeżyć stronę w przeglądarce, nie starcza też zamknięcie karty o otwarcie na nowo. Żeby przeglądarka użyła nowej wersji apletu trzeba zamknąć przeglądarkę.
0

Sorki mój błąd. Nie dodałem klasy anonimowej do pliku jar. Działa.
Jeżeli chodzi o główny problem, czyli ta gierka. Błąd jest przy odczycie grafik z plików, bo gdy nie wyświetlam ich to działa. Przy otwieraniu Image nie daję getCodeBase() bo przy wywoływaniu dostaję wyjątek

java.lang.NullPointerException
at java.applet.Applet.getCodeBase(Unknown Source)

A chcę to przypisać do zmiennej
codeBase = getCodeBase();

1

Z jara powinieneś czytać pliki graficzne inaczej

  new ImageIcon(this.class.getResource("nazwa pliku"))
0

OK. Śmiga. Dzięki

0

Witam, miałem taki sam problem, przeniesienie obrazka na serwer na którym jest aplet pomogło.
Pojawił się jednak kolejny problem.
Przyciski, po wcisnieciu ktorych powinno nastapic połączenie z bazą danych nie reagują na klikniecie. Domyslam sie ze problem moze byc podobny, gdyż baze danych mam równiez na innym serwerze i w kodach klas sa adresy URL serwera bazy. W jaki sposób mogłbym rozwiazac ten problem?

0

Musisz podpisać aplet.

0

Da się to zrobić z poziomu Eclipse?

0

Nie. Musisz wygenerować sobie klucz a potem podpisać jarsignerem.

0

Podpisałem aplet zgodnie z instrukcją z tej stronki :
http://java-fx.pl/podpisywanie-apletow-javafx/
Podpisany plik .jar wrzucilem na serwer. Podczas próby uruchomienia apletu faktycznie pojawiło sie oknienko bezpieczeństwa, w którym mozna uruchomic aplet (RUN) lub nie (Cancel) - czyli plik jar został podpisany.
Jednak działanie apletu nie zmieniło się - tak jak do tej pory przyciski, które powoduja łączenie z baza danych na zewnetrznym serwerze mozna klikać dowoli a one w ogóle nie reagują. Czy ktoś wie czym to może być spowodowane?

=========

Rozwiazaniem tego problemu zapewne byłoby umieszczenie bazy danych na tym samym serwerze co aplet. Jednak do zalozonej bazy danych na serwerze ktorym dysponuje (1&1) , nie wiedziec czemu nie moge sie dostać poprzez JDBC. Przeczytalem gdzies iformacje ze dostep do bazy danych zalozonej na serwerach 1&1 jest niemozliwy poprzez JDBC. Jednak nie jest to sprawdzona informacja, może ktos wie cos wiecej na ten temat?

0

Niestety nie udalo mi sie rozwiazac problemu, nawet w przypadku umieszczenia apletu na tym samym serwerze co baza danych. Probowalem na wszelkie mozliwe sposoby. Czy jest na tym forum jakas osoba, ktorej udalo sie stworzyc aplet który z poziomu przegladarki łączy sie z baza danych mysql poprzez JDBC ?

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