Wyświetlenie apletu w przeglądarce

0

Witam

Zrobiłem prosty aplecik i chcę go uruchomić w przeglądarce. NetBeans automatycznie wygenerował plik HTML.
Lecz wyświetla mi cały designe a wartości pobieranych z xml-a już nie pobiera. Gdzie ma znajdować się plik xml-a? W miejscu gdzie usadził go NetBeans (z jego poziomu wszystko ładnie śmiga) czy przenieść do folderu z plikiem .hmtl?

Z pliku html:

 <APPLET codebase="classes" code="aplet/aplet.class" width=350 height=250></APPLET> 

Błędy wyrzucone przez javę:

 
java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
	at java.lang.System.getProperty(Unknown Source)
	at java.io.Win32FileSystem.getUserPath(Unknown Source)
	at java.io.Win32FileSystem.resolve(Unknown Source)
	at java.io.File.getAbsolutePath(Unknown Source)
	at java.io.File.getAbsoluteFile(Unknown Source)
	at java.io.File.toURI(Unknown Source)
	at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
	at aplet.aplet.init(aplet.java:60)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
0

Musisz podpisać aplet, bez tego nie ma uprawnień do pisania/czytania plików

0

@byku_guzio, mylisz się, odmowa dostępu jest przy próbie odczytania katalogu bieżącego użytkownika (System.getProperty("user.dir.")). Podpisanie apletu pozwoli odczytać ten katalog, ale skąd się w nim weźmie plik xml?
@autor, korzystanie z katalogu bieżącego jest w aplecie bez sensu. Możesz mieścić plik w katalogu apletu, wtedy jego URL uzyskasz przez getCodeBase().

0

Nawet przy wrzuceniu xml-a na serwer, w przeglądarce nie chce czytać... Podpis mam włączony

0

Liczysz na pomoc wróżki?
Jak czytasz?
Jaka jest reakcja programu, pojawia się jakiś wyjątek?

0

Próbowałem pobierać plik xml na dwa sposoby:

  URL url = new URL("http://sami10.cba.pl/pytania.xml");
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document doc = db.parse(url.openStream());
  doc.getDocumentElement().normalize();
  NodeList nodeLst = doc.getElementsByTagName("pytanie");
 
 
 File url = new File("pytania.xml");
 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 DocumentBuilder db = dbf.newDocumentBuilder();
 Document doc = db.parse(url);
 doc.getDocumentElement().normalize();
 NodeList nodeLst = doc.getElementsByTagName("pytanie");

W obu przypadkach w Netbeansie bez problemu plik się uruchamia i wszystko działa.
Natomiast uruchamiając w przglądarce pokazuje się sam interfejs graficzny. Natomiast nie jest wczytany xml.

Jedyne błędy pokazuje konsola javy w obu przypadkach:

 
java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
	at java.lang.System.getProperty(Unknown Source)
	at java.io.Win32FileSystem.getUserPath(Unknown Source)
	at java.io.Win32FileSystem.resolve(Unknown Source)
	at java.io.File.getAbsolutePath(Unknown Source)
	at java.io.File.getAbsoluteFile(Unknown Source)
	at java.io.File.toURI(Unknown Source)
	at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
	at aplet.aplet.init(aplet.java:57)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

0
  1. Po co, w pierwszym przypadku, próbujesz odczytać zmienną "user.dir" (tzn. katalog bieżący użytkownika?
  2. Rozwiązanie
  URL url = new URL("http://sami10.cba.pl/pytania.xml");

jest bardzo niepraktyczne, przeniesiesz na inny serwer i będziesz na nowo kompilował?

  URL url = new URL(getCodeBase()+"pytania.xml");
0
  URL url = new URL(getCodeBase()+"pytania.xml");

</quote>

Przy zmianie na to, nie wczytuje mi pliku xml, nawet w netbeasie. W jakim folderze powinnien znajdować się ten plik. Domyślnie mam to w foderze projektu, i próbowałme go wsadzić też do disc, build, src i nie czyta w ogóle ;/

0

Użytkownik końcowy nie będzie używał NetBeansa do uruchomienia apletu, uruchomi go przy pomocy przeglądarki. Jak chcesz się dowiedzieć co to jest getCodeBase()+"pytania.xml", to dodaj do kodu apletu

System.out.println(getCodeBase()+"pytania.xml");

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