2014-11-16 116 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

相关问题