2010-08-01 148 views
1

我正在尝试通过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> 

项目生成文件但是当我运行所产生的罐子,我得到这个错误信息无法从加载的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> 

当我重新得到的罐子,我得到了以下错误消息:

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

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

+0

<! - ? “” <项目名称= “HW.makejar” 默认值= “makejar” BASEDIR => \t <目标名称= “makejar” 描述= “为HW项目创建一个罐子”> \t \t <罐子jar文件= “的HelloWorld.jar” 包括= “*类。” BASEDIR = /> \t “” - - > 这是第一个XML文件 – Elliott 2010-08-01 16:54:19

+0

<! - <?xml version =“1.0”encoding =“UTF-8”?> \t \t \t \t \t \t \t \t \t \t <属性名=” 主类”值= “ami.HelloWorld”/> \t \t \t \t \t \t - > 这是第二个XML文件 – Elliott 2010-08-01 16:55:13

+0

所有这些注释中的xml不是非常可读,您是否可以删除这些注释并编辑问题以包含到目前为止的xml? – rsp 2010-08-01 19:00:10

回答

2

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

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

正如你建议,jar文件不包含任何类文件。按照您的建议更改了项目文件。现在我的项目文件如下所示: <?xml version =“1.0”encoding =“UTF-8”?> \t <目标名称= “makejar” 描述= “创建用于HW项目一罐”> \t \t <罐子jar文件= “的HelloWorld.jar” 包括= “** \ *。类” 的basedir = “”> \t \t \t 类文件是在那里,但是这是当我运行它会发生什么。 C:\工作区\ HW>罐子的HelloWorld.jar 无法从 加载主类清单属性的HelloWorld.jar – Elliott 2010-08-01 18:28:50

+0

尝试添加标签背到项目文件中的java - 我认为错误消息说,主清单中缺少-Class属性。 – richj 2010-08-01 21:45:02

+0

我刚刚重建了所有这些更改的项目,现在它的工作。谁知道。也许有些东西被损坏了。无论如何,感谢指针它让我开始了正确的方向。 – Elliott 2010-08-02 01:09:42

0

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