2011-08-16 110 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任務。否則你遲早會開始遇到問題。 –