8
votes

Exécuter le code Java en Java

Dupliqué possible:
Convertir la chaîne en code dans Java
Exécution de code dynamique sur Java

J'ai une chaîne contenant:
"pour (int i = 0; i <5; i ++) {system.out.println (\" * \ ");}"
Puis-je exécuter le code dans cette chaîne en Java?


4 commentaires

Vous pouvez utiliser le Javacompiler interface, mais je ne connais pas les détails.


Si vous avez le choix, n'utilisez pas Java comme entrée Utilisez JavaScript et exécutez votre code via le API de script Java


Quelle est l'importance de ce code? Utilisez-vous ce code dans certaines applications réelles?


@Lion - Oui, j'utilise cela dans une application réelle. Mais maintenant j'utilise une chaîne de code JavaScript au lieu du code Java.


6 Réponses :


2
votes

Si vous le transformez en un fichier source complet, vous pouvez le nourrir au compilateur Java Programmatiquement, mais j'ai vérifié la dernière fois que vous n'avez pas été disponible que si vous aviez le Java SDK installé sur votre machine; Il n'était pas disponible sur des machines avec la distribution des clients de Java. Bien sûr, cela peut avoir changé depuis lors. Regardez le package com.sun.tools.javac et vous trouverez l'API de Java Compiler.


0 commentaires

0
votes

Non, vous ne pouvez pas exécuter ce code dans votre programme.


1 commentaires

Oui, il y a des exceptions, mais c'est un "si tu dois demander" une sorte de chose - si vous ne comprenez pas déjà que c'est impossible, alors c'est impossible. Si vous comprenez que c'est impossible (et pourquoi), il devient alors possible (au moins dans certaines circonstances), en utilisant une combinaison de plusieurs tours sales.



1
votes

Il n'y a pas de fonction d'API de base Java pour le faire, mais vous pouvez appeler javac à l'aide de runtime.exeec ou en utilisant des classes "dangereuses" de < code> com.sun.tools.javac Voici un exemple:

http://juixe.com /techknow/index.php/2006/12/12/invoke-javac-at-runtime/


0 commentaires

2
votes

Peut-être que vous pouvez exécuter ceci comme Groovy:

http://groovy.codehaus.org/embedding+groovy


0 commentaires

4
votes

Depuis Java 6, vous pouvez compiler Compiler et exécuter une unité de compilation Java définie comme une chaîne ou un fichier à l'aide des API standard dans le SDK (une unité de compilation est fondamentalement tout Cela va à l'intérieur d'un fichier .java - package, importations, classes / interfaces / énumérations), jetez un coup d'œil à ce exemple . Vous ne pouvez pas gérer un extrait de Java arbitraire comme celui de votre question, cependant.

Si possible, ce serait une meilleure idée d'intégrer une langue de script différente qui vous permet d'exécuter des extraits de code d'un programme Java - par exemple, JavaScript, Groovy, mvel , Beanshell , etc. / p>


0 commentaires

1
votes

Je ne pense pas que vous puissiez exécuter une chaîne contenant un code Java.

Mais cela vaut la peine d'essayer si vous pouvez enregistrer cela en tant que fichier source Java et essayer d'utiliser ProcessBuilder classe à exécuter.

jamais essayé et je ne sais pas si c'est le meilleur moyen de le faire. Alors utilisez-le avec prudence :)

bonne chance!

a également trouvé un message similaire: classe d'exécution en Java


0 commentaires