Interprite un morcaux de code dans une application java
soubonoi
Messages postés
48
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je suis entrain d'Ecrire une application de comptabilité en java; mais je veut que les formules de calcule sont dynamique ( entrée par l'utilisateur final)
et pour fait sa je donne a l'utilisateur une zone de texte pour Ecrire un code en java et l'application interprète ce code.
es-que il y a une fonction qui compile en dynamique un morceaux de code java
merci d'avance
je suis entrain d'Ecrire une application de comptabilité en java; mais je veut que les formules de calcule sont dynamique ( entrée par l'utilisateur final)
et pour fait sa je donne a l'utilisateur une zone de texte pour Ecrire un code en java et l'application interprète ce code.
es-que il y a une fonction qui compile en dynamique un morceaux de code java
merci d'avance
A voir également:
- Interprite un morcaux de code dans une application java
- Code ascii - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Application java - Télécharger - Langages
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
1 réponse
Bonjour,
Pour interpréter un morceau de code Java il faudrait d'abord le compiler, c'est un peu lourd. Plus simplement tu pourrais écrire tes formules en JavaScript et utiliser la classe ScriptEngine pour l'interpréter.
Evidemment, tu pourras écrire le script dynamiquement et gérer autant de variables que tu veux, ainsi qu'utiliser la classe Math de JavaScript.La confiance n'exclut pas le contrôle
Pour interpréter un morceau de code Java il faudrait d'abord le compiler, c'est un peu lourd. Plus simplement tu pourrais écrire tes formules en JavaScript et utiliser la classe ScriptEngine pour l'interpréter.
package test; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Test { public static void main(String[] args) throws ScriptException { ScriptEngine js = new ScriptEngineManager().getEngineByName("js"); String script = "a=2; b=3; c=5; a+b*c"; double result = (double) js.eval(script); System.out.println(result); // 17.0 } }
Evidemment, tu pourras écrire le script dynamiquement et gérer autant de variables que tu veux, ainsi qu'utiliser la classe Math de JavaScript.La confiance n'exclut pas le contrôle
aussi la fonction getEngineByName() prendre en paramètre :"js" ou "javascript" ou "nashorn"
Exemple :
Pour le getEngineByName, ce sont des alias, au final c'est le même ScriptEngine qui sera utilisé (Oracle Nashorn). Tu peux afficher les ScriptEngine disponibles et leurs alias avec ce code (ça peut changer d'une version à l'autre de Java).
Chez moi ça donne ça :
Donc que tu utilises "js", "javascript", ou "nashorn", c'est pareil.
ou bien montrer mois comment passer au scripte de l'etulisateur un tablaux qui port les champs de lenregistrement courant de la table emploiyer par exemple.
et merci d'avance.
Tu peux créer des variables dans ton script, autant que tu veux, et avec n'importe quel nom. Si par exemple tu as dans ta table EMPLOYEUR des colonnes qui s'appellent NOM et ADRESSE, tu peux autoriser l'utilisateur à manipuler des variables nom et adresse que tu rempliras.
Exemple :
Remarque : il faudra faire attention avec les valeurs récupérées en base de données, si elles contiennent des apostrophes cela va casser le String initScript, et donner un peu n'importe quoi.
Exemple : si et tu aurais, qui vaut
C'est un script qui va planter. Pour éviter ça tu peux faire par exemple un sur chaque paramètre que tu ajoutes au script (nom et adresse dans l'exemple), ce qui donnerait l'apostrophe sera bien conservée et le script sera correct.