ReferenceError: "alert" n'est pas défini
Je suis en train d'appeler une fonction javascript à partir du code java.
Voici mon code Java
public static void main(String[] args) throws FileNotFoundException {
try {
/**
* To call a anonymous function from java script file
*/
ScriptEngine engine = new ScriptEngineManager()
.getEngineByName("javascript");
FileReader fr = new FileReader("src/js/MySpec.js");
engine.eval(fr);
} catch (ScriptException scrEx) {
scrEx.printStackTrace();
}
}
Voici mon fichier de script java:
(function() {
alert("Hello World !!!");
})();
Mais lorsque j'exécute la méthode main de la classe du pilote il me donne l'erreur comme ci-dessous:
Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "alert" is not defined. (<Unknown source>#2) in <Unknown source> at line number 2
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:110)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:232)
at Java6RhinoRunner.load(Java6RhinoRunner.java:42)
at Java6RhinoRunner.main(Java6RhinoRunner.java:12)
Ce que je sais, c'est qu'ils ont besoin de certaines moteur de script à exécuter.
Pour que j'ai ajouté rhino.jar fichier dans mon chemin de classe.Mais ce n'est pas de travail.
J'ai un de ne pas obtenir de la manière de résoudre cette erreur.
S'il vous plaît aider.Merci à l'avance.
source d'informationauteur Sanjay Jain
Vous devez vous connecter pour publier un commentaire.
alert
ne fait pas partie de JavaScript, c'est une partie de lawindow
objet fourni par les navigateurs web. Donc, il n'existe pas dans le contexte que vous essayez de l'utiliser. (Ceci est également vrai desetInterval
setTimeout
et d'autres minuterie de choses liées, pour info.)Si vous voulez juste faire simple sortie de la console, le Rhinocéros fournit un
print
fonction de votre script, de sorte que vous pouvez remplaceralert
avecprint
. Votre script a également accès à toutes les classes de Java et des autres, de sorte par exemplejava.lang.System.out.println('Hello');
serait de travailler à partir de votre script JavaScript (même si c'est un peu redondant avec leprint
fonction). Vous pouvez également faire la Java des variables disponibles pour votre script facilement viaScriptEngine.put
e.g:...et puis dans votre script:
...donc, c'est une troisième façon de faire de la sortie du script. 🙂
Voir la discussion dans le
javax.script
de la documentation du paqueten particulierScriptEngine#mettre
ou pour des cas plus complexes,Liaisons
(etSimpleBindings
) etScriptContext
.