2010-04-26 8 views
2

J'ai créé un script ant pour créer automatiquement un fichier jar à chaque fois que je construis un fichier.Problème d'Eclipse Ant Builder

Voici comment il ressemble:

<?xml version="1.0" encoding="UTF-8"?> 

<project name="TestProj" basedir="." default="jar"> 
    <property name="dist" value="dist" /> 
    <property name="build" value="bin/test/testproj" /> 
    <target name="jar"> 
     <jar destfile="${dist}/TestProj.jar"> 
      <manifest> 
       <attribute name="Main-Class" value="test.testproj.TestProj" /> 
      </manifest> 
      <fileset dir="${build}" /> 
     </jar> 
    </target> 
</project> 

Je l'ai ajouté en cliquant droit sur mes projets> propriétés> constructeurs> cliquai nouveau> constructeur Ant> je spécifié l'emplacement du fichier XML ci-dessus.

Cependant, quand je le lance en faisant:

java -jar TestProj.jar 

je reçois un test NoClassDefFoundError/TestProj/TestProj

J'utilise Eclipse dans Ubuntu. TestProj est le nom de la classe et il est dans le paquet test.testproj

Je suis assez sûr qu'il y a quelque chose de mal avec le manifeste et probablement l'emplacement du fichier xml, mais je ne suis pas sûr de savoir comment résoudre ce problème. Des idées?

Répondre

2

Avez-vous essayé avec:

<property name="build" value="bin" /> <!-- instead of bin/test/testproj --> 
    <target name="jar"> 
     <jar destfile="${dist}/TestProj.jar"> 
      <manifest> 
       <attribute name="Main-Class" value="test.testproj.TestProj" /> 
      </manifest> 
      <fileset dir="${build}" /> 
     </jar> 
    </target> 

juste pour voir si elle résout le problème?

Le Ant Task mentionne:

Cette tâche constitue un FileSet implicite et prend en charge la plupart des attributs de <fileset> (dir devient basedir)

Cela signifie que vous essayez de jar une classe dans le racine bin/test/testproj (donc TestProj inclus), au lieu de faire référence à toutes les classes de la racine bin (qui comprend test.testproj.TestProj)

+0

Oh merci, ça l'a corrigé. –

Questions connexes