ovviamente no, bisogna modificare il codice; avevo capito che c'era una dimensione massima... allora ritorna al codice precedente![]()
ciao
ovviamente no, bisogna modificare il codice; avevo capito che c'era una dimensione massima... allora ritorna al codice precedente![]()
ciao
ok ma basta mettere un numero molto alto che non si deve superare giusto?
Volevo dirti che il mio amico senza Java Machine Sun continua a non vedere nulla, gli da class not found, come mai secondo te? Io ti passo il codice...
Scusa per la rottura...import java.applet.*;
import java.io.*;
import java.net.*;
import java.util.*;
public class AKKAttpRemote extends Applet {
String var;
private InputStream inputstream;
public void init() {}
public void paint(Graphics g){
try{
for(int i=0;i<10000;i++);
String host="http://www.akkattp.com/classes/fun.asp?p=1";
URL url = new URL(host);
inputstream = (url).openStream();
int aByte= -1;
ByteArrayOutputStream baos= new ByteArrayOutputStream();
while((aByte= inputstream.read())!= -1){
baos.write(aByte);
}
String aString= new String(baos.toByteArray());
g.drawString( "Lettura Effettuata" , 10, 50 );
g.drawString( aString , 10, 65 );
inputstream.close();
}catch(MalformedURLException _e){
g.drawString( _e.toString() , 50, 60 );
}catch(IOException _e){
g.drawString( _e.toString() , 50, 60 );
}
}
}
Strano, il sorgente non compila: manca l'import
import java.awt.*;
per la classe Graphics...
Puoi aggiornare il .class? Da me in locale funziona, cioe' vedo la scritta 'Lettura effettuata' ecc, mentre la tua versione on line non la vedo...
Ho decompilato la tua classe, ho visto che in effetti e' corretta
Dalla console java di Internet Explorer, risulta che l'errore e' il seguente:
com.ms.security.SecurityExceptionEx[AKKAttpRemote.paint]: cannot access "www.akkattp.com":80
at com/ms/security/permissions/NetIOPermission.check
at com/ms/security/PolicyEngine.deepCheck
at com/ms/security/PolicyEngine.checkPermission
at com/ms/net/wininet/WininetURLConnection.checkSecurity
at com/ms/net/wininet/WininetURLConnection.connect
at com/ms/net/wininet/WininetURLConnection.getInputStream
at java/net/URL.openStream
at AKKAttpRemote.paint
at com/ms/awt/WComponentPeer.doClearAndPaint
at com/ms/awt/WComponentPeer.paintNode
at com/ms/ui/windowmanager/PaintRequest.run
at com/ms/ui/windowmanager/RunnableMessage.run
at com/ms/awt/WSystemQueue.getMessage
at com/ms/awt/WEventQueue.getNextEvent
at java/awt/EventDispatchThread.run
anche se poi il messaggio finale è:
Error loading class: AKKAttpRemote
java.lang.NoClassDefFoundError
java.lang.ClassNotFoundException: AKKAttpRemote
at com/ms/vm/loader/URLClassLoader.loadClass
at com/ms/vm/loader/URLClassLoader.loadClass
at com/ms/applet/AppletPanel.securedClassLoad
at com/ms/applet/AppletPanel.processSentEvent
at com/ms/applet/AppletPanel.processSentEvent
at com/ms/applet/AppletPanel.run
at java/lang/Thread.run
Quindi e' un problema di security... pero' sapevo che alle applet e' permesso accedere all'host da cui sono state scaricate no?
vai su
SecurityExceptionEx Exception Running a Java Applet
Forse c'e' la soluzione: aggiungi
try {
if (Class.forName("com.ms.security.PolicyEngine") != null) {
PolicyEngine.assertPermission(PermissionID.NETIO);
}
} catch (Throwable cnfe) {
}
al codice prima di aprire l'URL
Ciao,
rob
in effetti al copia ed incolla mi è sfuggito l'import java.awt;
Se ho capito bene allora non era un problema di versione della JVM, ma un problema di sicurezza... Ma la JVM di microsoft funziona diversa allora?
Ho provato ad aggiungere quel codice mettendo anche
import com.ms.security.*;
ma al compilatore tutto ciò fa schifo.
come risolvo il tutto?
L'applet dei RemoteScripting di Microsoft non è molto diversa come principio dalla mia eppure funziona senza quell'errore di sicurezza.
Si', a quanto ho capito usano policy di sicurezza diversa le due VM...
per compilare correttamente dovresti aggiungere nel classpath il jar o lo zip che contiene le classi com.ms.security.*; non so pero' dove si trovi quel jar :master: .
Dov'e' l'applet dei RemoteScripting di Microsoft ?
io l'ho scaricata da http://www.aspitalia.com/, ma se mi dai la tua mail te la invio pesa pochi KB. Tu che decompilatore usi?
Mandami pure un messaggio privato dal forum; io uso Java Decompiler,
http://members.fortunecity.com/neshkov/dj.html
ciao,
rob
Dopo mezza giornata di lavoro insieme a roberman (che ringrazio tantissimo) siamo giunti a questa conclusione:
per compilarlo bisogna però utilizzare anche le librerie di microsoft. Io per compilare ho scompattato tutti i file .zip all'interno di c:\windows\java\packages e li ho inseriti in una cartella insieme al file .java da compilare. Poi da li la compilazione è andata a buon fine.codice:import com.ms.security.PermissionID; import com.ms.security.PolicyEngine; import java.applet.Applet; import java.awt.Graphics; import java.io.*; import java.net.MalformedURLException; import java.net.URL; public class AKKAttpRemote extends Applet{ public AKKAttpRemote(){} public void init(){ try{ if(Class.forName("com.ms.security.PolicyEngine") != null){ PolicyEngine.assertPermission(PermissionID.NETIO); System.out.println("dentro init..."); } }catch(Exception exception){ exception.printStackTrace(); } } public void paint(Graphics g){ try{ for(int i = 0; i < 10000; i++); String s = "fun.asp?p=1"; URL url = new URL(s); inputstream = url.openStream(); int j = -1; ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); while((j = inputstream.read()) != -1) bytearrayoutputstream.write(j); String s1 = new String(bytearrayoutputstream.toByteArray()); g.drawString("Lettura Effettuata", 10, 50); g.drawString(s1, 10, 65); inputstream.close(); }catch(MalformedURLException malformedurlexception){ g.drawString(malformedurlexception.toString(), 50, 60); }catch(IOException ioexception){ g.drawString(ioexception.toString(), 50, 60); } } String var; private InputStream inputstream; }
Mi piacerebbe solo che qualcuno di voi testaste questi 2 link con e senza JRE di Sun
http://www.akkattp.com/classes/AKKATTPproxy.html
http://www.akkattp.com/classes/AKKAttpRemote.htm
Ciao e grazie a tutti
![]()
Fatemi sapere...