我做了一个自定义的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)内的所有类。

10-07 21:00