2014-11-16 55 views
0

我想用Ant創建可執行文件(雙擊)jar。我的課程是ChatClient和ChatServer,它是一個簡單的多線程聊天服務器。我在閱讀教程後創建了build.xml,但這裏似乎有些問題。我得到的錯誤是, 錯誤:找不到或加載主類C:...類是SimpleChatServer和SimpleChatClient從Ant創建的可執行jar文件不起作用

<?xml version="1.0"?> 
<project name = "JamesPractice" default= "jar" basedir ="."> 
<property name = "src.dir" location = "src" /> 
<property name = "build.dir" location = "c:\Build" /> 
<property name = "project.name" value = "JamesPractice" /> 
<property name="lib.dir" location="lib" /> 

<target name = "clean"> 
    <delete dir="${build.dir}" /> 
</target> 

<target name = "makedir"> 
    <mkdir dir= "${build.dir}" /> 
    <mkdir dir= "${build.dir}\classes" /> 
</target> 

<target name = "compile" depends = "clean, makedir"> 
    <javac srcdir = "${src.dir}" destdir = "${build.dir}\classes" /> 
</target> 

<target name = "jar" depends = "compile"> 
    <jar destfile = "${build.dir}/jars/${ant.project.name}.jar" basedir = "${build.dir}/classes" /> 
    <manifest file = "MANIFEST.MF"> 
     <attribute name = "Main-Class" value = "SimpleChat.SimpleChatServer"/> 
     <attribute name = "Class-Path" value = "."/> 
    </manifest> 

</target> 

MANIFEST.MF 
Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.9.2 
Created-By: 1.7.0_11-b21 (Oracle Corporation) 
Main-Class: SimpleChat.SimpleChatClient 

Editied 我已合併兩個階級,它工作正常。但.jar仍然給我同樣的錯誤..去測試HelloWorld,看看我能否得到這個工作...

+0

http://stackoverflow.com/questions/9874550/how-to-create-a-bundled-runnable-jar-using-ant – Jayan

回答

0

移動「清單」部分在< jar> ... </jar>標記:

<target name = "jar" depends = "compile"> 
    <jar destfile = "${build.dir}/jars/${ant.project.name}.jar" basedir = "${build.dir}/classes"> 
     <manifest file = "MANIFEST.MF"> 
      <attribute name = "Main-Class" value = "SimpleChat.SimpleChatServer"/> 
      <attribute name = "Class-Path" value = "."/> 
     </manifest> 
    </jar> 
</target> 

而且它會更好地使用Maven而不是老式的Ant。 Maven幾年前成爲一個行業標準。

+0

謝謝你,讓我感動下,並擺脫了文件=「清單的。 MF「,因爲錯誤說清單不支持」文件「屬性。但我仍然得到相同的「無法加載」主要錯誤。這可能是類路徑或主類錯誤嗎? – jaycee

+0

似乎在構建中不需要Class-Path屬性。嘗試刪除它。如果它不會幫助 - 編輯您的問題,並將生成的MANIFEST.MF內容添加到其中。 – ursa

+0

刪除類路徑後仍然出現相同的錯誤。我添加了在刪除之前生成的MANIFEST.MF。 – jaycee

相關問題