Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Ant创建的可执行jar文件不起作用_Java_Eclipse_Ant_Jar_Scripting - Fatal编程技术网

Java 从Ant创建的可执行jar文件不起作用

Java 从Ant创建的可执行jar文件不起作用,java,eclipse,ant,jar,scripting,Java,Eclipse,Ant,Jar,Scripting,我正在尝试使用Ant创建一个可执行(双击)jar。我的类是ChatClient和ChatServer,这是一个简单的多线程聊天服务器。我在阅读了教程之后创建了build.xml,但这里似乎有问题。 我得到的错误是, 错误:无法找到或加载主类C:。。。(jar文件的路径) 我的项目名是JamesPractice,包名是SimpleChat。类是SimpleChatServer和SimpleChatClient <?xml version="1.0"?> <project name

我正在尝试使用Ant创建一个可执行(双击)jar。我的类是ChatClient和ChatServer,这是一个简单的多线程聊天服务器。我在阅读了教程之后创建了build.xml,但这里似乎有问题。 我得到的错误是, 错误:无法找到或加载主类C:。。。(jar文件的路径)

我的项目名是JamesPractice,包名是SimpleChat。类是SimpleChatServer和SimpleChatClient

<?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>

已编辑 我合并了两个班,效果很好。但是.jar仍然给了我同样的错误。。正在使用HelloWorld进行测试,看看我是否可以让它工作…

将“清单”部分移到。。。标签:



最好使用Maven而不是老式的Ant。Maven在几年前就成为了行业标准。

谢谢,我改为file=“MANIFEST.MF”,因为错误显示MANIFEST不支持“file”属性。但我仍然得到相同的“无法加载”主要错误。这可能是类路径或主类的错误吗?似乎在构建中不需要类路径属性。尝试移除它。如果没有帮助-编辑您的问题并将生成的MANIFEST.MF内容添加到其中。删除类路径后,我仍然会遇到相同的错误。我添加了在删除它之前生成的MANIFEST.MF。只是为了验证:您的jar文件中是否有/SimpleChat/SimpleChatServer.class文件?是的,/SimpleChat/SimpleChatServer.class和/SimpleChat/simplechatsclient.class都在jar文件中
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
<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>