ToolProvider.getSystemJavaCompiler() retourne null - utilisable avec JRE installé?
Je suis en train d'utiliser le JavaCompiler classe:
Quand je l'appelle ToolProvider.getSystemJavaCompiler (), elle renvoie null.
Je pense que c'est parce que je suis en utilisant un JRE au lieu d'un JDK.
Le problème c'est que je veux qu'il fonctionne sur toutes les plates-formes, peu importe la météo, l'utilisateur est à l'aide d'un JRE ou JDK.
Si quelqu'un sait comment résoudre ce problème, ou une méthode alternative à l'utilisation s'il vous plaît commentaire.
Toute aide serait appréciée.
- Vous avez probablement besoin du JDK à l'utilisation des outils de développement comme un compilateur... juste une supposition.
- Attention avec les titres. Cette question n'a rien à voir avec le "compilateur Java ne fonctionne pas".
- Je pense que vous devriez anser la question par @nneonneo. Il ya une bonne chance qu'il (ou quelqu'un d'autre) peut suggérer une approche différente (si ils savent ce que vous voulez faire). Sinon, nous pouvons juste vous dire que votre approche sera pas de travail.
- Le JasperReports paquet a besoin d'un compilateur Java, et peut fonctionner sur la JRE à l'aide de la base java Eclipse java compilateur.
Vous devez vous connecter pour publier un commentaire.
ToolProvider.getSystemJavaCompiler() n'est pas disponible.
Est tools.jar manquant dans le classpath?
Set class path to the tools.jar
fichier trouvé dans le jdk\jre répertoire.System.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.7.0_02");
Voici comment exécuter le compilateur de Java à partir de votre application quand il n'y a pas de JDK installé.
D'abord, comprennent les tools.jar fichier à partir d'un JDK avec votre application Java et de mettre tools.jar dans votre classpath. Oracle ne sera probablement pas comme vous le faire. Mais, il est légal de contourner. Vous obtenez le tools.jar fichier à partir de la gratuit de Jdk offerts par openjdk.org (openjdk), RedHat (IcedTea), ou Azul Systems (Zoulou).
Prochaine, au lieu d'utiliser ToolProvider.getSystemJavaCompiler() et le JavaCompiler classe, appeler le compilateur situé dans tools.jar directement. Ci-dessous est extrait de code:
Je pense que c'est le problème .Explicitement spécifier la version de java.exe vous êtes en utilisant, comme celui de votre JDK répertoire.
voir ici pour plus de détails
null
est la valeur de retour attendue lors de l'utilisation d'un JRE. Par conséquent, le bug a été signalé que "ce n'est pas un défaut".Il suffit de copier tools.jar fichier de /lib à
Il fonctionne
Vous pouvez obtenir par le Système.out.println( System.getProperty( "java.home"))
La plupart du temps c'est comme
C:\Program files\Java\jre(version) [ pour windows ]
Une autre solution est de:
- http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7181951
Copie tools.jar dans JDK_HOME/lib/dans JRE_HOME/lib/.
Au moins pour moi, il a résolu mon problème comme par magie!
(Je n'ai rien recommandées ci-dessus. J'ai juste copié là.)
ici est simple solution qui a fonctionné pour moi
Je viens de changer le jre System library en.......Program Files\Java\jdk1.7.0_55\jre au lieu de.....Program Files\Java\jdk1.7.0_55\bin et il a travaillé pour moi.
Sur un Mac, cela a fonctionné pour moi:
(Il ne fonctionne pas pour idk 10 pour une certaine raison).
J'ai eu les deux JRE et JDK dans mon buildPath...j'ai juste enlevé le JRE et il a fixé.