PDA

View Full Version : [JAVA] Aprire applet da pagina web


songoge
29-04-2010, 15:37
Ho il bisogno di aprire un'applet java dentro una pagina web (php preferibilmente)

Il mio programmino in java l'ho trovato su internet.
Per farlo partire dal mio pc, ho questo file run.cmd
con dentro queste righe:

@echo off
java.exe -classpath .\conf;.\lib\freesigner.jar;.\lib\bcmail-jdk14-125.jar;.\lib\bcprov-jdk14-125.jar;.\lib\j4sign-core.jar it.infocamere.freesigner.gui.Freesigner
@goto end
:end

Come faccio ora a farlo partire da una pagine web?

PGI-Bis
29-04-2010, 17:45
puoi usare java web start o collegare l'eseguibile jar (il browser poi chiederà all'utente se vuole aprirlo con java). Meglio la prima.

Puoi anche usare un'applet java (in senso proprio), cioè usare il tag <applet> o <object eccetera> a patto che il programma sia un'applet e non un'applicazione desktop.

songoge
29-04-2010, 18:57
Ho usato questo:

<applet code = 'it\infocamere\freesigner\gui\Freesigner.class'
archive = 'lib\freesigner.jar,lib\bcmail-jdk14-125.jar,lib\bcprov-jdk14-125.jar,lib\j4sign-core.jar',
width = 350,
height = 300
/>

Ma mi da il seguente errore:
java.lang.reflect.InvocationTargetException
at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.runOnEDT(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.io.FilePermission images\logocard.jpg 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.checkRead(Unknown Source)
at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
at sun.awt.SunToolkit.getImage(Unknown Source)
at javax.swing.ImageIcon.<init>(Unknown Source)
at javax.swing.ImageIcon.<init>(Unknown Source)
at it.infocamere.freesigner.gui.Freesigner.initComponents(Freesigner.java:104)
at it.infocamere.freesigner.gui.Freesigner.<init>(Freesigner.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Eccezione: java.lang.reflect.InvocationTargetException

PGI-Bis
29-04-2010, 19:38
Ho dato un'occhiata a questo freesigner. Si tratta semplicemente di firmare i jar del programma e decidere se usare jnlp o un'applet che avvi il programma al suo caricamento.

E' necessario comunque di apportare una modifica a quel programma Java (più che altro di aggiungere qualcosa): così com'è non è eseguibile tramite applet.

Ps: l'eccezione che incontri è dovuta alla mancata firma dei jar del programma ma anche se li firmassi non partirebbe perchè Freesigner non è una Applet java.

songoge
29-04-2010, 19:46
Il tuo consiglio quindi è creare un'applet che carichi il file run.cmd?

Altrimenti cosa si deve fare per cambiarlo in una applet?

PGI-Bis
29-04-2010, 19:58
L'applet sarebbe:

import java.applet.Applet;

public class Test extends Applet {

@Override
public void start() {
it.infocamere.freesigner.gui.Freedesigner.main(null);
}
}

Non serve il bat. Non serve neanche l'applet se usi jnlp, cioè se segui quanto qui riportato:

http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/contents.html

E' un malloppone ma spiega tutto. La questione della firma è spiegata nel capitolo "Application Development Considerations".

songoge
29-04-2010, 20:13
Ok. Grazie di tutto. Vediamo se riesco a farlo funzionare.