我做了一个自定义的ant脚本,每次执行构建时都会自动创建一个jar文件。
它是这样的:
<?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 test / testproj / TestProj
我在Ubuntu中使用Eclipse。 TestProj是该类的名称,位于包test.testproj中
我很确定清单和xml文件的位置也有问题,但是我不确定如何解决。有任何想法吗?
最佳答案
您是否尝试过:
<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
成为basedir)这意味着您正在尝试在根
bin/test/testproj
内添加任何类(以使TestProj
被包含在内),而不是引用根bin
(可能包含test.testproj.TestProj
)内的所有类。