Bonjour à tous,
J'ai déjà réalisé quelques programmes Java notamment avec Netbeans dont je suis content.
Mais là, mon problème est vraiment un soucis de débutant en Java.
Je galère depuis plusieurs jours avec un assez gros programme alors je suis revenu au petit programme de test qui met en évidence les mêmes soucis.
Mon problème est l'appel d'une fonction Java depuis le javascript (dans l'autre sens pas de soucis).
Je me suis basé sur cet exemple trouvé sur le web qui déclenche les mêmes erreurs.
le fichier javascript est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import java.io.FileReader; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class Exemple3 { private static class Afficheur { public void affiche() { System.out.println("J'affiche !"); } } public static void main(String[] args) throws Exception { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); engine.eval(new FileReader("afficheur.js")); Afficheur aff = new Afficheur(); engine.put("monAfficheur", aff); Invocable inv = (Invocable) engine; inv.invokeFunction("affiche"); } }
ça se compile, mais à l'exécutions j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function affiche() { monAfficheur.affiche(); }
Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.EcmaError: TypeError: Impossible de trouver la fonction affiche dans lobjet {1}. (<Unknown source>#2) in <Unknown source> at line number 2
at com.sun.script.javascript.RhinoScriptEngine.invoke(RhinoScriptEngine.java:300)
at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:258)
at Example3.main(Example3.java:23)
Caused by: sun.org.mozilla.javascript.EcmaError: TypeError: Impossible de trouver la fonction affiche dans lobjet {1}. (<Unknown source>#2)
at sun.org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3687)
at sun.org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3665)
at sun.org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3693)
at sun.org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3712)
at sun.org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3783)
at sun.org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2269)
at sun.org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2251)
at sun.org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1317)
at sun.org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815)
at sun.org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)
at sun.org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
at com.sun.script.javascript.RhinoScriptEngine$1.superDoTopCall(RhinoScriptEngine.java:116)
at com.sun.script.javascript.RhinoScriptEngine$1.doTopCall(RhinoScriptEngine.java:109)
at sun.org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
at sun.org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:107)
at com.sun.script.javascript.RhinoScriptEngine.invoke(RhinoScriptEngine.java:294)
... 2 more
Il semble que j'aie un problème de visibilité, et là, j'avoue ne pas encore avoir tout compris à la visibilité en Java.
Je serais profondément reconnaissant envers ceux qui pourraient m'aider à trouver la voie...
Cordialement.
Danilo
Partager