【问题标题】:creating a build file with ant用 ant 创建构建文件
【发布时间】:2011-03-23 21:49:44
【问题描述】:

我正在尝试浏览 Web 上的 HelloWorld 示例,该示例向您展示了如何在 Eclipse 中使用 ANT 创建构建文件。这是来自网络示例的项目构建文件

<?xml version="1.0" encoding="UTF-8"?>
<project name="HW.makejar" default="makejar" basedir=".">
    <target name="makejar" description="Create a jar for the HW project">
        <jar jarfile="HelloWorld.jar" includes="*.class" basedir="."/>
    </target>
</project>

但是当我运行生成的 jar 时,我收到此错误消息 failed to load Main-Class manifest attribute from HelloWorld.jar。

然后我就这样试了:

<?xml version="1.0" encoding="UTF-8"?>
<project name="HW.makejar" default="makejar" basedir=".">
    <target name="makejar" description="Create a jar for the HW project">
        <jar jarfile="HelloWorld.jar" includes="*.class" basedir=".">
            <manifest>
                <attribute name="Main-Class" value="ami.HelloWorld" />
            </manifest>
        </jar>

    </target>
</project>

当我重新运行生成的 jar 时,我收到以下错误消息:

Exception in thread "main" java.lang.NoClassDefFoundError: ami/HelloWorld

我做错了什么。顺便说一句,当我手动编译源代码并在 Eclipse 中指定 Main.class 时,生成的 jar 可以完美运行。

【问题讨论】:

  • 这是第二个 XML 文件
  • cmets 中的所有这些 xml 可读性都不是很好,您可以删除这些 cmets 并编辑问题以包含您目前拥有的 xml 吗?
  • 现在项目文件是: 但是当我运行它时,我又回到了:c:\workspace\HW>java - jar HelloWorld.jar 线程“main”中的异常 java.lang.NoClassDefFoundError:HelloWorld 在 jar 中:我看到了类文件和清单。我会在下面发帖
  • 这是清单:Manifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 16.3-b01 (Sun Microsystems Inc.) Main-Class: HelloWorld

标签: java eclipse file ant build


【解决方案1】:

你的基础正确吗?如果您 jar tvf HelloWorld.jarHelloWorld.class 文件夹下的 HelloWorld.class 类?如果它直接列在根目录下,则需要从其父文件夹添加它,而不是从 ami 文件夹添加。

【讨论】:

    【解决方案2】:

    您的 jar 文件是否包含任何类文件?如果没有,请尝试:

    <jar jarfile="HelloWorld.jar" includes="**/*.class" basedir=".">
    

    【讨论】:

    • 正如您所建议的,jar 文件不包含任何类文件。我按照您的建议更改了项目文件。现在我的项目文件如下所示: 类文件在那里,但是当我运行它时会发生这种情况。 c:\workspace\HW>java -jar HelloWorld.jar 无法从 HelloWorld.jar 加载 Main-Class 清单属性
    • 尝试将 标签重新添加到项目文件中 - 我认为错误消息是说清单中缺少 Main-Class 属性。
    • 我刚刚用所有这些更改重建了项目,现在它可以工作了。谁知道。也许有些东西被破坏了。无论如何,感谢您的指点它让我朝着正确的方向开始。
    猜你喜欢
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    相关资源
    最近更新 更多