【问题标题】:Issue with Ant build fileAnt 构建文件的问题
【发布时间】:2013-04-02 22:52:25
【问题描述】:

我有一个名为 test1.java 的 java 文件,其中包含一个简单的 hello world 消息。

我有一个用于创建 jar 文件的 ANT 构建脚本,如下所示:

<?xml version="1.0" ?>
<project name="test1" default="main">

<target name="main" depends="compile, compress">
<echo>
    Building the .jar file
</echo>
</target>

<target name="compile">
    <javac srcdir="." includeantruntime="false"/>
</target>

<target name="compress">
    <jar jarfile="proj.jar" basedir="." includes="*.class">
            <manifest>
                <attribute name="Main-Class" value="test1"/>
            </manifest>
        </jar>

</target>


</project>

文件编译成功,并创建了一个 jar 文件。

但是当我尝试以java -jar proj.jar 执行 jar 时,我收到以下错误: jarfile proj.jar 无效或损坏

我该如何解决这个问题。

清单文件的内容如下:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.0
Created-By: pap64dev-20071008 (SR6) (IBM Corporation)
Main-Class: test1

【问题讨论】:

  • 如果我解压缩创建的 jar,我会看到名为 test1.class 的类文件
  • 你的类中是否声明了一个包?你能展示你的课程内容吗?
  • 不,我没有包声明。它只是一个简单的 java 类

标签: java ant jar


【解决方案1】:

通过降级到 Ant 1.8.4 解决了这个问题。 Ant 1.9 似乎不适用于 Java 5

【讨论】:

    【解决方案2】:

    我建议让“压缩”任务依赖于“编译”任务,因为如果先执行“压缩”,就没有要打包的类文件了。

    你也确定你的主类的名字真的是“test1”(按照惯例,类名应该以大写字母开头)。

    【讨论】:

    • 我为压缩任务添加了依赖项。在 ant 作业运行后,我看到生成的类为 test1.class
    • 好的,那么你在运行jar的时候还有同样的问题吗?
    • 你能把文件的扩展名从.jar改成.zip,打开,列出里面文件的树状结构吗?
    • 我解压了 proj.jar,它有 test1.class 和 META-INF 目录。我已经更新了问题中清单文件的内容。你还想让我改变扩展名吗?将文件从 .jar 转换为 .zip。
    • 不知道,对我有用,就像普通的香草你好世界级一样。
    猜你喜欢
    • 2013-06-23
    • 2013-05-09
    • 2021-03-20
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多