2011-08-16 105 views
0

创建简单的测试java项目只是为了学习如何使用Ant来部署应用程序。 Java项目使用Swing创建JFrame和一个JLabel来说“Hello World”。它看起来像这样:Ant部署。 Jar无法找到主类

package com.mytest; 
import javax.swing.*;   

public class home { 
    private static void createAndShowGUI() { 
     JFrame frame = new JFrame("HelloWorldSwing"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JLabel label = new JLabel("Hello World"); 
     frame.getContentPane().add(label); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
    public static void main(String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 
    } 
} 

然后创建build.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<project default="mytest" basedir="."> 
    <target name ="mytest" description="Create a jar for the Test project"> 
    <echo message="starting MyTest jar creation..." /> 
    <jar jarfile="mytest.jar" includes="*.class" basedir="bin"> 
     <manifest> 
      <attribute name="Created-By" value="1.6.0_04 (Sun Microsystems Inc.)" /> 
      <attribute name="Built-By" value="Me" /> 
      <attribute name="Implementation-Version" value="1.0" /> 
      <attribute name="Main-Class" value="com.mytest.home" /> 
     </manifest> 
    </jar> 
    <echo message="MyTest jar created..." /> 
    </target> 
</project> 

的问题是,一旦我通过Eclipse中运行的部署,将创建罐子,但我不能启动它。我收到消息:找不到主要的类:com.mytest.home

出了什么问题?这似乎是简单直接的过程。我错过了什么吗?

谢谢。

回答

0

我在你的ant脚本中找不到编译任务。如果没有编译任务,如何生成类文件?

也只是解压缩jar文件,看看这个类是否真的存在?

+0

我不确定Compile Task是什么?我看过几个帮助网站,其中一个来自Eclipse,我没有看到任何地方提及编译任务。我设置了项目(Properties> Builder)以在手动Build上运行部署任务。我收到消息“BUILD SUCCESSFUL”,但是我打开了jar,它是空的。我怎样才能指定编译任务? – bobetko

+0

我的意思是,我明白编译任务是什么,但不知道如何去做。我也在一些旧项目中查看一些现有的deployment.xml。应用程序部署良好,但我无法在XML文件中找到任何编译任务... – bobetko

+0

请看下面的链接http://ant.apache.org/manual/Tasks/javac.html。您需要有一个javac任务来将java文件编译为临时文件夹。那么只有你可以把它们捆在罐子里。如果你对ant很陌生,还有一个建议,那就是手动创建一个MANIFEST.MF文件并将其包含在jar中更容易。它最初会让你的生活更轻松。 –

0

我对这一切有点困惑。就我所知,Eclipse在运行时正在构建项目,当您键入时,然后当您决定部署时,您的部署脚本只需要按照您在脚本中指定的方式打包所有内容。它基本上将项目中的类文件复制到jar文件中。

对于我的具体问题,原来我是缺少<文件集>元素,这是<罐子>元素的孩子,所以我的XML脚本现在看起来像这样:

<?xml version="1.0" encoding="UTF-8"?> 
<project default="mytest" basedir="."> 
    <target name ="mytest" description="Create a jar for the Test project"> 
    <echo message="starting MyTest jar creation..." /> 
    <jar jarfile="mytest.jar" includes="*.class" basedir="."> 
     <fileset dir="./bin" /> 
     <manifest> 
      <attribute name="Created-By" value="..." /> 
      <attribute name="Built-By" value="Me" /> 
      <attribute name="Implementation-Version" value="1.0" /> 
      <attribute name="Main-Class" value="com.mytest.home" /> 
     </manifest> 
    </jar> 
    <echo message="MyTest jar created..." /> 
    </target> 
</project> 

我试图运行jar文件,它的工作。

+0

你正在依赖eclipse来编译你的代码。我会说在java脚本中放入一个javac任务。否则你迟早会开始遇到问题。 –