2010-04-26 2 views
2

Я создал собственный скрипт ant для автоматического создания файла jar каждый раз, когда я делаю сборку.Проблема Eclipse Ant Builder

Вот как это выглядит:

<?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> 

Я добавил ее правой кнопкой мыши мой проект> свойства> строители> щелкнул новый> Ant строитель> Затем я определил местоположение указанного выше файла XML.

Однако, когда я запускаю его, выполнив:

java -jar TestProj.jar 

Я получаю тест NoClassDefFoundError/testproj/TestProj

Я использую Eclipse, в Ubuntu. TestProj - это имя класса, и оно находится в пакете test.testproj

Я уверен, что что-то не так с манифестом и, вероятно, с расположением xml-файла, но я не уверен, как это исправить. Есть идеи?

ответ

2

ли вы попробовать с:

<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> 

просто чтобы увидеть, если он решает эту проблему?

Ant Task упоминает:

Эта задача формирует неявное FileSet и поддерживает большинство атрибутов <fileset> (dir становится имя_базовой_папки)

Это означает, что вы пытаетесь баночка любого класса в пределах root bin/test/testproj (так что TestProj включите), вместо ссылки на все классы внутри корня bin (который будет включать test.testproj.TestProj)

+0

О, спасибо, это исправлено. –