web-dev-qa-db-fra.com

Ant: Classe non trouvée: javac1.8

J'essaie de construire un projet en utilisant Ant dans Eclipse. J'ai fait un clic droit sur build.xml> Exécuter en tant que> Ant Build. Cependant, j'obtiens l'erreur suivante:

BUILD FAILED
C:\Users\David\Eclipse\test-project\build.xml:26: Class not found: javac1.8

et aussi un avertissement:

compile:
[javac] C:\Users\David\Eclipse\test-project\build.xml:26: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

Comme je l'ai lu dans d'autres articles, cela pourrait être dû à une version de fourmi trop ancienne ou à la non-définition correcte des variables d'environnement, voici toutes les informations:

C:\>Java -version
Java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

C:\>ant -version
Apache Ant(TM) version 1.9.3 compiled on December 23 2013

C:\>echo %Java_HOME%
C:\Program Files\Java\jdk1.8.0_05

C:\>echo %JRE_HOME%
C:\Program Files\Java\jre8

EDIT: Voici le build.xml entier, la ligne 26 est la balise javac:

<?xml version="1.0"?>
<project name="test-project" default="main" basedir=".">
  <!-- Sets variables which can later be used. -->
  <!-- The value of a property is accessed via ${} -->
  <property name="src.dir" location="src" />
  <property name="build.dir" location="bin" />
  <property name="dist.dir" location="dist" />
  <property name="docs.dir" location="docs" />

  <!-- Deletes the existing build, docs and dist directory-->
  <target name="clean">
    <delete dir="${build.dir}" />
    <delete dir="${docs.dir}" />
    <delete dir="${dist.dir}" />
  </target>

  <!-- Creates the  build, docs and dist directory-->
  <target name="makedir">
    <mkdir dir="${build.dir}" />
    <mkdir dir="${docs.dir}" />
    <mkdir dir="${dist.dir}" />
  </target>

  <!-- Compiles the Java code (including the usage of library for JUnit -->
  <target name="compile" depends="clean, makedir">
    <javac srcdir="${src.dir}" destdir="${build.dir}">
    </javac>
  </target>

  <!-- Creates Javadoc -->
  <target name="docs" depends="compile">
    <javadoc packagenames="src" sourcepath="${src.dir}" destdir="${docs.dir}">
      <!-- Define which files / directory should get included, we include all -->
       <fileset dir="${src.dir}">
                <include name="**" />
           </fileset>
    </javadoc>
  </target>

  <!--Creates the deployable jar file  -->
  <target name="jar" depends="compile">
    <jar destfile="${dist.dir}\test-project1.jar" basedir="${build.dir}">
      <manifest>
        <attribute name="Main-Class" value="test.Main" />
      </manifest>
    </jar>
  </target>

  <target name="main" depends="compile, jar, docs">
    <description>Main target</description>
  </target>

</project> 
26
David_Z

La version d'Ant fournie avec votre version d'Eclipse n'est pas compatible avec Java 1.8.

Accédez à la page de téléchargement Ant , et extrayez la dernière version quelque part appropriée sur votre système de fichiers.

Dans Eclipse, accédez à Window > Preferences > Ant > Runtime, clique le Ant Home... et sélectionnez l'emplacement vers lequel vous avez extrait la nouvelle Ant téléchargée.

31
studro

Pour le rendre encore plus clair.

1> Définissez Java_HOME, JRE_HOME et Update Ant sur 1.9

2> Au-dessus de build.xml, faites un clic droit => exécuter en tant que (cela prend dans la configuration) ==> Maintenant dans cette fenêtre de modification de configuration et de lancement

sélectionnez l'onglet Principal puis le troisième champ du formulaire appelé "Arguments" ajoutez:

-Dbuild.compiler=javac1.7

3> Dans build.xml, ajoutez includeeantruntime = "false"

<javac srcdir="${src}" destdir="${bin}" debug="true" encoding="ISO-8859-1" includeantruntime="false">
        <classpath refid="my.classpath"/>
</javac>

Edit configuration

Il devrait compiler sans aucun message

6
vimal krishna

Je pense que ce que vous voyez est Ant Bug 53347 (voir https://issues.Apache.org/bugzilla/show_bug.cgi?id=53347 ).

Si c'est le cas, essayez pf les solutions de contournement suivantes:

Définissez la propriété "build.compiler" sur une valeur significative telle que "javac1.7" ou "javac1.3".

Définissez l'attribut "compilateur" de l'élément "javac" de votre script de génération sur l'une des valeurs ci-dessus. Pour toutes les valeurs possibles et leur signification, voir http://ant.Apache.org/manual/Tasks/javac.html

1
user1774051

M. studro a raison. Je viens de confirmer un exemple sur Ubuntu 14.04

Sudo apt-get install ant
ant -version
Apache Ant (TM) Version 1.9.3 compiled on April August 2014

fonctionne parfaitement dans Eclipse, il suffit de suivre les étapes décrites par M. studro pour configurer le 'Ant Home' dans Eclipse avec "/ usr/share/ant".
Cordialement, Stéphane.

1
smillien62

Assurez-vous que vos fichiers source sont dans "ProjectDirectory/src".

0
kasi