2010-04-26 60 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

我在Ubuntu使用Eclipse。 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>大多数属性(dir成为BASEDIR

这意味着你正在尝试JAR中的任何类根bin/test/testproj(所以TestProj得到包括),而不是参考根bin内的所有类(其将包括test.testproj.TestProj

+0

噢,谢谢,修复它。 – 2010-04-26 18:52:22