myClass.java: listing pour SimpleCompileTest.java qui compile le fichier myClass.java. p> SimpleCompileTest.java: p> package test;
import javax.tools.*;
public class SimpleCompileTest {
public static void main(String[] args) {
String fileToCompile = "test" + java.io.File.separator +"MyClass.java";
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int compilationResult = compiler.run(null, null, null, fileToCompile);
if(compilationResult == 0){
System.out.println("Compilation is successful");
}else{
System.out.println("Compilation Failed");
}
}
}
6 Réponses :
Je soupçonne que vous courez dans Ce problème - exécuter le code avec une jre au lieu d'un JDK. P>
Lorsque vous exécutez SimpleCompileTest code>, essayez explicitement em> spécifiant la version de java.exe que vous utilisez comme celle de votre répertoire JDK. p>
Comment spécifiez-vous explicitement la version de Java.exe que vous utilisez comme celle de votre JDK? J'ai essayé exécuter comme code> mais c'est déjà
projet JRE code> sélectionné comme jre
@Imray: Je ne sais pas ce que vous demandez - si c'est le JRE sélectionné, c'est ce qui fonctionnera. Si vous en voulez un autre, sélectionnez une autre JRE. On dirait que vous devez poser une nouvelle question avec votre problème exactement i>.
Dans votre réponse, vous dites: "Lorsque vous exécutez SimpleCompileTest, essayez de spécifier explicitement la version de Java.exe que vous utilisez comme celle de votre répertoire JDK." Je demande, comment faites-vous cela?
@Imray: Je dis que c'est probablement le "projet jre" que vous avez configuré n'est tout simplement pas le bon. Donc éditer cette configuration.
Vous avez probablement un jre au lieu de JDK installé. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id= 6477844 p>
Son travail avec application Java en confidentiellement, y compris les outils.jar mais pour une application Web ne fonctionne pas. Jeter Nullpointer P>
J'ai la même erreur. Je suis peut-être trop tard pour répondre à cette question, mais je partage mes propres expériences, cela pourrait aider quelqu'un d'autre à faire face à la même question à l'avenir. Je jouais avec le code source chez Compiler Les fichiers Java à l'exécution .
J'avais J'ai trouvé une solution de contournement en forçant l'utilisation de JDK1.7 en définissant une propriété système comme celle-ci: p> puis j'ai compilé mon programme et n'a pas compris Tout java.lang.nullpointereException code> comme cela est mentionné. J'ai imprimé le répertoire de base Java avec
system.out.println (system.geproperty ("java.home")); code>, et remarqué mon éclipse indiquant "
C: \ Program Files \ Java \ jre7 code> "Même après avoir changé mes préférences pour utiliser JDK1.7 au lieu de JRE1.7. P>
nullpointException code>. p> p>
Tu es super chérie. Vous avez résolu mon problème de 3 dernières semaines. Merci
J'ai essayé ceci pour faire Compilation-Toolkit travail. J'ai dû utiliser system.setproperty ("java.home", "c: \\ Program Files \\ java \\ jdk1.7.0_02 \ jre"); code> pour le faire fonctionner.
Supplément: La réponse ci-dessus consiste à définir la propriété système Java.Home dans le programme. Cela fonctionne aussi pour moi, mais ce n'est pas une solution très générale, car vous avez un codé dur pour une version JDK. L'alternative que j'utilise maintenant est de donner le chemin complet de "Java" sur la ligne de commande lorsque je gère le programme. Telle que (cohérente avec des exemples ci-dessus): donnant le chemin complet de la version JDK signifie que la version qui exécute le programme, c'est donc celui qui sera récupéré avec ToolProvider.getsystemjavacpiler ( ); p> p>
J'avais le même problème
System.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.8.0_31");
Pouvez-vous s'il vous plaît éditez votre code avec des tags?
Votre problème est donc que
ToolProvider.getsystemjavacompiler () code> retourne null?