2013-08-25 53 views
4

我正在使用ANT创建.jar文件。这是我build.xmlant jar命令给出错误:“Building MANIFEST-only jar”

<?xml version="1.0"?> 
<project name="stack_overflow" default="info"> 
    <target name="info"> 
     <jar destfile="util.jar" includes="com/appl/constants"> 
      <manifest> 
       <attribute name="Main-Class" 
          value="com.appl.constants.Applicationinfo.class"/> 
      </manifest> 
     </jar> 
    </target> 
</project> 

当我运行ant jar,该util.jar文件生成,但只有MANIFEST.MF就在那里。

这是错误我得到:

Buildfile: C:\Users\Srikrishna\workspace\SpringExample5\build\build.xml 
info: 
     [jar] Building MANIFEST-only jar: C:\Users\Srikrishna\workspace\ 
      SpringExample5\build\${web.dir}\lib\util.jar 

BUILD FAILED 
C:\Users\Srikrishna\workspace\SpringExample5\build\build.xml:5: 
Could not create almost empty JAR archive (
C:\Users\Srikrishna\workspace\SpringExample5\build\${web.dir}\lib\util.jar 
(The system cannot find the path specified)) 

Total time: 200 milliseconds 

我的文件夹结构是:

src 
| 
com.appl.constants 
    | 
Applicationinfo.class 

为什么没有得到把我的罐子?

回答

2

您需要为jar任务指定basedir属性或使用嵌套的< fileset>告诉jar任务在哪里查找类。

这是一个示例构建文件。在jar目标的通知是有BASEDIR提及“构建/班”

<project> 
    <target name="clean"> 
     <delete dir="build"/> 
    </target> 

    <target name="compile"> 
     <mkdir dir="build/classes"/> 
     <javac srcdir="src" destdir="build/classes"/> 
    </target> 

    <target name="jar"> 
     <mkdir dir="build/jar"/> 
     <jar destfile="build/jar/CalculateStats.jar" basedir="build/classes"> 
      <manifest> 
       <attribute name="Main-Class" value="mypackage.CalculateStats"/> 
      </manifest> 
     </jar> 
    </target> 

    <target name="run"> 
     <java jar="build/jar/CalculateStats.jar" fork="true"/> 
    </target> 

</project> 
+0

格雷格您好,感谢responding.if我指定的basedir说这样的basedir =“$ {} build.dir /班”,它是扔以下错误.BUILD FAILED C:\ Users \ Srikrishna \ workspace \ SpringExample5 \ build \ build.xml:6:C:\ Users \ Srikrishna \ workspace \ SpringExample5 \ build \ $ {build.dir} \ classes not found。并且我也不知道如何使用。可以举一个例子说明如何读取类路径。 – Krishna