Impossible de trouver un compilateur javac
Je suis en train de package de mon application web dans la guerre de fichier à l'aide de Ant.
Quand je construis, j'obtiens l'erreur suivante:
C:\Documents and Settings\Administrator\workspace\Assignment7\build.xml:67: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre6"
Ce qui suit est mon build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Generate War" default="install" basedir=".">
<property name="build.dir" value="build"/>
<property name="dir.name" value="Assignment7"/>
<property name="package.name" value="${dir.name}.war"/>
<property name="content" value="webContent"/>
<property name="web-inf" value="${content}\WEB-INF"/>
<property name="meta-inf" value="${content}\META-INF"/>
<property name="jsp.dir.name" value="${content}"/>
<property name="lib" value="${web-inf}\lib"/>
<property name="src" value="src"/>
<property name="dest.dir" value="target"/>
<!-- Setting path to the server webapp folder -->
<property name="webapp.dir" value="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps"/>
<!-- Using temp folder for convinence -->
<property name="temp.dir" value="temp"/>
<property name="temp.dir.web-inf" value="${temp.dir}\WEB-INF"/>
<property name="temp.dir.meta-inf" value="${temp.dir}\META-INF"/>
<property name="temp.dir.lib" value="${temp.dir.web-inf}\lib"/>
<property name="temp.dir.classes" value="${temp.dir.web-inf}\classes"/>
<!--<property name="temp.dir.classes.dir" value="${temp.dir.classes}\**"/>-->
<property name="package.file" value="${dest.dir}\${package.name}"/>
<path id="build.class.path">
<fileset dir="${lib}">
<include name="**/*.jar"/>
</fileset>
</path>
<path id="build.class.path1">
<fileset dir="C:\program files\java\jre6\lib">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="clean">
<delete>
<fileset dir="${dest.dir}" includes="**/*"/>
</delete>
<delete dir="${temp.dir}"/>
<delete dir="${temp.dir.classes}"/>
<delete dir="${temp.dir.web-inf}"/>
<delete dir="${temp.dir.meta-inf}"/>
</target>
<target name="prepare" depends="clean">
<mkdir dir="${dest.dir}"/>
<mkdir dir="${temp.dir}"/>
<mkdir dir="${temp.dir.web-inf}"/>
<mkdir dir="${temp.dir.lib}"/>
<mkdir dir="${temp.dir.classes}"/>
<mkdir dir="${temp.dir.meta-inf}"/>
</target>
<target name="compile" depends="prepare">
<echo>==="complie"===</echo>
<javac srcdir="${src}" destdir="${temp.dir.classes}" debug="on">
<classpath refid="build.class.path"></classpath>
</javac>
<!--<copydir src="${build.dir}\classes" dest="${temp.dir.classes}"/>-->
</target>
<target name="package" depends="compile">
<echo>"PACKAGING THE FILES"</echo>
<copy file="${meta-inf}\MANIFEST.MF" tofile="${temp.dir.meta-inf}\MANIFEST.MF" overwrite="true"/>
<copy file="${web-inf}\web.xml" tofile="${temp.dir.web-inf}\web.xml" overwrite="true"/>
<copy file="${web-inf}\tiles.xml" tofile="${temp.dir.web-inf}\tiles.xml" overwrite="true"/>
<copy todir="${temp.dir.classes}">
<fileset dir="${src}">
<include name="**/*.xml"/>
</fileset>
</copy>
<war destfile="${package.file}" webxml="${temp.dir.web-inf}\web.xml" basedir="${temp.dir}">
<fileset dir="${jsp.dir.name}"/>
<lib dir="${lib}"></lib>
<classes dir="${temp.dir.classes}"></classes>
</war>
</target>
<target name="jsps">
<copy todir="${webapp.dir}\${dir.name}">
<fileset dir="${content}">
<include name="**/*.jsp"/>
<include name="**/*.html"/>
<include name="**/*.css"/>
<include name="**/*.gif"/>
<include name="**/*.jpg"/>
<include name="**/*.png"/>
<include name="**/*.js"/>
</fileset>
</copy>
</target>
<target name="install" depends="package">
<copy file="${package.file}" todir="${webapp.dir}" overwrite="true"/>
</target>
</project>
Comment puis-je compiler un fichier de classe qui n'ont pas de classe principale?
Comment puis-je définir le chemin de classe?
Pour référence, je suis à l'aide d'Eclipse.
Vous devez vous connecter pour publier un commentaire.
Tous vos ant choses fonctionnent bien, sauf le javac tâche qui a besoin de l'tools.jar, situé dans le répertoire /lib de la JDK, JRE n'est pas suffisante dans ce cas. Par conséquent, l'indice de fourmi : "Impossible de trouver un compilateur javac;..."
Lorsque l'on travaille avec Eclipse le paramètre par défaut des points à votre installation JRE.
Alors, un de vos premiers pas après le démarrage d'Eclipse pour la première fois devrait être :
Window > Preferences > Java > Installed JREs
et de modifier les paramètres de JRE de JDK.Vous pouvez également utiliser :
Window > Preferences > Ant > Runtime > Classpath > Global Entries
et ajouter le tools.jar à partir de votre JDK/dossier lib
J'ai eu le même problème. Dans mon cas, je l'ai corrigé en pointant JAVA_HOME pour le JDK dossier, plutôt que de le JDK\bin.
Actuellement, vous avez défini JAVA_HOME pour vos installé jre au lieu de le jdk.
Installer le JDK puis set JAVA_HOME pour votre JDK Répertoire.
Vous trouverez le courant jdk ici
http://www.oracle.com/technetwork/java/javase/downloads/index.html
J'ai eu ce problème et a formulé des observations sur https://stackoverflow.com/a/8406221/866333 disant que le fix n'était pas bon. (En fait, il a été déclaré que JAVA_HOME était autre chose, j'ai donc proposé un script a été de le changer).
Que leur réponse a déclaré le compilateur ne ment pas.
Tellement vrai, j'ai finalement repéré mon vieux
JAVA_HOME
variable a été quelque chose comme JDK_v7.0.7 quand je l'avais supprimés (à partir de 2012 de restauration de DVD) et mis à jour comme JDK_v7.7.1. Pourquoi il a jugé bon de revenir sur le JRE, supposons que c'était une commodité.par exemple
@exécute le script...@
@chèque à l'invite de cmd@
donc c'est un peu de mensonges n'est-ce pas?
J'ai fait l'erreur d'installer le JDK et le JRE à la même emplacement. Installation du JDK installe automatiquement un JRE, et par hasard, j'ai choisi le même emplacement que le JDK.
Cela a causé beaucoup de confusion dans eclipse.
Installer le JDK et le JRE à différents endroits.
C'est une erreur commune par la plupart des débutants,
JRE est juste pour l'exécution de java code/applications.
Si vous voulez compiler le code java, vous devez utiliser le JDK.
Donc, ouvrez les variables d'environnement, et set JAVA_HOME chemin du JDK dossier au lieu de JRE
J'ai été faire cette erreur lorsque vous essayez d'installer un outil basé sur java, à l'aide de ant.
Mon $variable d'environnement JAVA_HOME, dans ~/.bash_profile, a été créé dans /usr/lib/jvm/java-version 1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre
Par la suppression de la jre, (un niveau de répertoire vers le haut), faisant $JAVA_HOME,
/usr/lib/jvm/java-version 1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/,
correction du problème pour moi.
N'oubliez pas d'exécuter, source ~/.bash_profile, après avoir fait le changement !
HTH