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 użytkowników online, w tym zalogowanych: 0, gości: 1