verwenden deployJava.js zum Aufruf von java-Methoden in javascript
Möchte ich java-Methoden aufrufen in javascript und Andrew Thompson vorgeschlagen, die deployJava.js Bibliothek für diese. Ich folgte dieser Anleitung:
http://docs.oracle.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html
Hier wird erklärt, wie man die java Klasse in javascript, aber ich würde gerne die java-Methoden innerhalb der javascript-Dateien. (Dies ist, weil ich will, zu importieren .owl-Datei in java-en export der Daten im json-format, um meinen code in javascript geschrieben.)
Weiß jemand, wie dies mit der deployJava Bibliothek?
Dies ist mein code zum importieren der java-Datei:
<noscript>A browser with JavaScript enabled is required for this page to operate properly.</noscript>
<h1>Sending Messages to Other Applets</h1>
<script>
function sendMsgToIncrementCounter() {
receiver.incrementCounter();
}
</script>
<p>Sender Applet</p>
<script>
var attributes = { id:'sender', code:'Sender.class', width:300, height:50} ;
var parameters = {} ;
deployJava.runApplet(attributes, parameters, '1.6');
</script>
<br/>
<br/>
<p>Receiver Applet</p>
<script>
var attributes = { id:'receiver', code:'../Receiver.class', width:300, height:50} ;
var parameters = {} ;
deployJava.runApplet(attributes, parameters, '1.6');
</script>
- und dies ist die Absender-und Empfänger-java-Dateien:
import javax.swing.*;
public class Receiver extends JApplet {
private int ctr = 0;
private JLabel ctrLbl = null;
public void init() {
//Execute a job on the event-dispatching thread; creating this applet's GUI.
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
ctrLbl = new JLabel("");
add(ctrLbl);
}
});
} catch (Exception e) {
System.err.println("Could not create applet's GUI");
}
}
public void incrementCounter() {
ctr++;
String text = " Current Value Of Counter: " + (new Integer(ctr)).toString();
ctrLbl.setText(text);
}
}
import javax.swing.*;
import java.das awt.event.;
import netscape.javascript.;
public class Sender extends JApplet implements ActionListener {
public void init() {
//Execute a job on the event-dispatching thread; creating this applet's GUI.
try {
final ActionListener al = this;
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
JButton btn = new JButton("Click To Increment Counter");
add(btn);
btn.addActionListener(al);
}
});
} catch (Exception e) {
System.err.println("createGUI didn't complete successfully");
}
}
public void actionPerformed(ActionEvent e) {
try {
JSObject window = JSObject.getWindow(this);
window.eval("sendMsgToIncrementCounter()");
} catch (JSException jse) {
jse.printStackTrace();
}
}
}
Ich nur copy-paste diese aus dem Beispiel auf dieser Seite:
http://docs.oracle.com/javase/tutorial/deployment/applet/iac.html
Dieses Beispiel funktioniert perfekt in meinem browser, so wie es geschehen ist, ist richtig, aber ich vermute, dass ich nicht importieren Sie die javafiles korrekt, denn dies sind die Fehler, aus je java-Konsole:
load: class Sender.class not found.
java.lang.ClassNotFoundException: Sender.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:195)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:249)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:179)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:160)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:690)
at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3045)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1497)
at java.lang.Thread.run(Thread.java:680)
Exception: java.lang.ClassNotFoundException: Sender.class
- Als beiseite. Ist das ein server/client wie vorgeschlagen von der Klasse Namen? Wenn ja, schau mal in die 3 Methoden in
AppletContext
, die "stream" - im Namen. Sie erlauben den applets in der selben JRE, um direkt miteinander kommunizieren. - Auch, wenn Sie entdeckt die Antwort, geben Sie diese bitte als 'Antwort' & akzeptieren Sie es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kombinieren Sie Ihre ursprüngliche Methode, mit der neuen JS-snippet, und Teil der akzeptierten Antworten auf die Letzte Frage (gezwickt), gibt..
Aber ich habe geschrieben, dass oben aus der Spitze von meinem Kopf. Nicht Vertrauen Sie mir, Vertrauen ein validation service. 😉
Ich würde raten, die Einrichtung eines einfachen webservice, der den javascript-code verwenden können. Es muss nicht sein, sehr engagiert, ich persönlich würde mit einem einfachen layout REST mit JAX-RS (jersey ist wirklich schön, mit zu arbeiten), vor allem, wenn Sie etwas wollen, einfach mit JSON-Unterstützung eingebaut (mit dem richtigen plugin).
Versuchen, tatsächlich die Kommunikation mit dem applet auf der Seite könnte möglich sein, aber sehr browser-abhängig und IMHO nicht der Mühe Wert. Wenn Sie arbeiten auf dem web, genauso gut könnte Sie mit einem web-service.
Gab es ein problem mit dem Verzeichnis des .die class-Dateien in die Attribute. Hier ist der richtige code: