|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
|
[JAVA]n-esima applet che non si carica
...per voi però, perchè per me è la prima...
ho fatto quest'oggi la mia prima applet ma purtroppo non riesco a visualizzarla nella pagina html a cui l'ho aggiunta. Praticamente ho creato una classe AppletPanel extends JPanel, il cui costruttore mi "costruisce" un JPanel con alcuni JComponent aggiunti. Dopodichè nella classe dell'applet (classe in cui c'è la public void init()) ho creato un'istanza di AppletPanel e l'ho aggiunta all'applet tramite la funzione add()... Posto i codici: applet Codice:
package applet;
import appletPanel.Panel;
import javax.swing.*;
public class Applet extends JApplet
{
public void init()
{
Panel pannelloIscrizioni = new Panel();
this.add(pannelloIscrizioni);
}
}
Il file .html si trova nella stessa cartella in cui è sita Applet.class Codice:
<html>
<head>
<title>Iscrizioni Dietisti</title>
</head>
<body>
<applet code="Applet.class" width=200 height=200> </applet>
</body>
</html>
cosa devo fare? a me sembra tutto giusto, eppure... grazie mille in anticipo
__________________
...work in progress... |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
|
Quote:
<applet code="applet/Applet.class" width=200 height=200> </applet> e si il file Applet.class si trova nella stessa directory (E:\Programmazione\Programmi Java\it.casa.form\applet) del file .html... ho provato ma niente... sempre una X rossa, e la console Java dice: ---------------------------------------------------- caricamento: classe applet/Applet.class non trovata. java.lang.ClassNotFoundException: applet.Applet.class at sun.applet.AppletClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.applet.AppletClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.applet.AppletClassLoader.loadCode(Unknown Source) at sun.applet.AppletPanel.createApplet(Unknown Source) at sun.plugin.AppletViewer.createApplet(Unknown Source) at sun.applet.AppletPanel.runLoader(Unknown Source) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.io.FileNotFoundException: E:\Programmazione\Programmi Java\it.casa.form\applet\applet\Applet\class.class (Impossibile trovare il percorso specificato) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at sun.net.http://www.protocol.file.FileURLConn...onnect(Unknown Source) at sun.net.http://www.protocol.file.FileURLConn...Stream(Unknown Source) at sun.applet.AppletClassLoader.getBytes(Unknown Source) at sun.applet.AppletClassLoader.access$100(Unknown Source) at sun.applet.AppletClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) ... 10 more
__________________
...work in progress... |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
<una directory>
|
+-- file.html
|
+-- applet
|
+-- Applet.class
Tieni presente una cosa importante: in Java i nomi e la struttura dei package si devono "riflettere" nella struttura delle directory!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
|
Ok scusa hai ragione ho rispostato l'.html dove mi hai detto tu e questa volta la Console Java ha sputato questo:
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc) 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.checkPackageAccess(Unknown Source) at sun.applet.AppletSecurity.checkPackageAccess(Unknown Source) at sun.applet.AppletClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at applet.InserimentoDB.<init>(InserimentoDB.java:28) at appletPanel.Panel$2.<init>(Panel.java:101) at appletPanel.Panel.<init>(Panel.java:99) at applet.Applet.init(Applet.java:11) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) ti ringrazio per tutti i consigli e aiuti che mi stai fornendo... Ecco così vedi com'è composto il tutto: it.casa.form | |----> iscrizioni | | | |----> iscrizioni.mdb | |----> applet | | | |---->applet.class\.java | |---->inserimentoDB.class\.java | |----> appletPanel | | | |----> Panel.class\.java | |----> Applet.html
__________________
...work in progress... Ultima modifica di KNX : 02-11-2006 alle 16:47. |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Comunque leggi <qui>, parla proprio dell'uso di JDBC nelle applet.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
|
Allora ho spulciato il link (messo ampiamente tra preferiti
1)Dato che quando provo ad avviare l'Applet la Console Java mi dice java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc ) 2)ho fatto come scritto sul sito e cioè ho aperto il Policytool e aggiustato la Policy inserendo il permesso grant { permission java.lang.RuntimePermission "accessClassInPackage.sun.jdbc.odbc"; }; 3)Nonostante ciò continua a non aprirmisi e a darmi lo stesso messaggio di errore (la Console Java dico) 4)ho notato però che quando uso il Policytool nel momento in cui creo il nuovo permesso, ho la possibilità di specificare la classe. Mi spiego con un esempio: accessClassInPackage.<nome package> questo è ciò che il Policytool mi dice, quindi ti chiedo: che package devo specificare quello contenente l'applet, quello contenente le direttive per la connessione al DB o quello contenente il DB stesso (che cmq in realtà nn è un package ma una cartella)? grazie mille
__________________
...work in progress... |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
|
aspetta aspetta nuovo sviluppo:
ho dato all'applet il permesso per tutto e tramite l'appletviewer (specificando il nome del file policy) riesco a farla partire ma se apro il .html a cui è annessa ancora una X rossa e stesso messaggio di errore... appletviewer -J-Djava.security.policy=lucapolicy Applet.html con questo parte
__________________
...work in progress... |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Eh ... guarda, mi prendi un po' alla sprovvista perchè devo ammettere che delle questioni relative alla sicurezza in Java (policy, ecc...) ne so ancora poco.
Comunque una cosa so. Tu passi all'appletviewer un parametro. Questo però vale solo per l'appletviewer. Se vuoi che valga in generale per il runtime delle applet, devi andare in Pannello di controllo -> Java -> Impostazioni runtime applet Java e quindi impostare il parametro per il JRE. A questo punto credo che valga per tutti i browser che usano quel JRE.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Ne saprai anche poco ma c'hai preso in pieno
Nella "Console Java", che puoi aprire quando parte il plug-in Java, in alto c'è scritto quale versione del JRE sia usata. Annotala, nel caso tu ne abbia più d'una. Apri il pannello di controllo di Java, vai nella scheda Java, nella sezione "impostazioni runtime applet java" premi il pulsante "visualizza". C'è una tabella con i nomi dei JRE installati. Individua quello corrispondente al JRE del plug-in (determinato attraverso la console Java), fai doppio click nella cella della colonna "Parametri runtime Java" e scrivi i valori necessari a caricare il tuo file policy. Occhio alla sintassi. Ad esempio: Codice:
java -Djava.security.manager -Djava.security.policy=file:C:/aa aa/bb/cc cc/pgi.policy Specifica sempre un codebase al tuo grant, giusto per evitare che nel caso in cui dimentichi di eliminare i permessi di sicurezza sperimentali qualcuno faccia porcate con le applet Ultima modifica di PGI-Bis : 03-11-2006 alle 17:00. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
|
siete stati dei grandi tutti e due e vi ringrazio molto per l'aiuto...
dal mio computer adesso, dopo aver passato il file .policy con i dovuti permessi e quindi aver configurato le opzioni runtime delle applet, è tutto ok riesco a visualizzare l'applet e interagire col DB. Ora dovrei fare il passo successivo e cioè pubblicarla sulla mia pagina web. Per questo diciamo che ho cambiato (nell'HTML della mia pagina web) l'URL dell'applet mettendo quello appropriato, ma neanche a dirlo non riesco a visualizzarla ne sul mio PC ne da quello di una seconda persona. Il messaggio di errore che compare nella console java è uguale a quello che mi compariva in precedenza: java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc) Ho pensato allora che: 1) Dovevo cambiare anche l'URL del DB 2) Dovevo altresì cambiare quello del .policy Per questo vi chiedo: cosa devo aggiungere a String DBurl "jdbc:odbc:...??????...:<nomeMioDB>" l'URL completo di dove si trova il DB? C'è una sintassi particolare? grazie mille
__________________
...work in progress... |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
|
up...
__________________
...work in progress... |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
<applet code="applet/Applet.class" .... Dopotutto ... è relativo alla posizione del file HTML. Quello che invece sicuramente devi cambiare è il codeBase all'interno del file di policy.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
|
Quote:
__________________
...work in progress... |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
CODEBASE è l'attributo che qualifica l'applicazione di un insieme di politiche di sicurezza. E' quello che c'è subito di fianco ai "grant" nei file policy.
In file policy può contenere più insiemi di permessi ognuno dei quali applicabili a diverse categorie di applicazioni, identificate o in base alla provenienza (il codebase) o all'identità del firmatario (nel caso di applicazione certificata) o a entrambi. Controlla che il grant del tuo file policy in cui sono inseriti i permessi per l'accesso al package sun.* abbia un codebase compatibile con la provenienza dell'applet su internet. |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
|
Allora, ho fatto un pò di confusiona ma adesso rimedio:
1) sto usando il server ftp Tiscali (ftp.tiscali.it) 2) il codice del file .policy presente sul server è: Codice:
AUTOMATICALLY GENERATED ON Tue Apr 16 17:
:59 EDT 2002
DO NOT EDIT
grant {
permission java.security.AllPermission;
4) questo URL (da passare come parametro a DriverManager.getConnection) è giusto? Codice:
String msAccessURL = "jdbc:odbc://ftp.tiscali.it/Iscrizioni;user=xxxx;password=xxxx"; grazie mille per essere stati così pazienti, purtroppo mi sono addentrato in una cosa più grande di me...
__________________
...work in progress... |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Io non sono un esperto di access ma non so se sia sufficiente mettere su una macchina il file mdb perchè si possa accedere alla base dati in esso contenuta. Se non vado errato, occorre anche che quel file sia impostato come origine dati (sul server).
Per il file policy, un grant senza niente è un grant in cui il codebase è ALL (da ogni dove). Trascurando il fatto che prima di applicare quelle particolari politiche di sicurezza che hai realizzato sarebbe consono gridare "sì, fammi male bestia, dai, dai", per far usare al plug-in quelle politiche suicide la sintassi dovrebbe essere: -Djava.security.policy=ftp:indirizzoftpdelfilepolicy Dico dovrebbe perchè non so se il sistema vada oltre l'http, in termini di protocollo supportato (la documentazione dice ogni URL valido ma gli esempi trattano di http e file). |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:58.



















