从Jar或Batch文件执行Java运行的应用程序

时间:2011-10-07 16:36:04

标签: java apache ant build batch-file

我有一个Java应用程序和一个构建文件,在其任务中,有一个任务是从应用程序创建一个jar文件,另一个是运行应用程序

<!-- ===== Create An Executable Jar target ======-->
<target name="jar-task" depends="compile-task">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="jar/Guix.jar" basedir="${gui_bin.dir}">
        <fileset dir="${basedir}">
            <include name="img/**/" />
            </fileset>
            <manifest>
                <attribute name="Main-Class" value="sys.deep.cepu.Start"/>
            </manifest>
            <filelist dir="${basedir}" files="user.properties"/>
    </jar>
</target>

<!-- 
    ============ Run target =================== 
    -->
<target name="run-task" depends="jar-task">
      <java classpath="${basedir};jar/Guix.jar;CK-DASP-2.0.0.jar;library/*;user.properties;img/* " classname="sys.deep.cepu.Start" fork="true">
    </java>
</target>

构建文件运行完美,创建了jar并运行了应用程序。我想允许用户通过单击单个文件(jar或批处理文件)来启动应用程序。我试图点击生成的可执行jar文件但没有任何反应。这是正常的吗?有人可以给我一个关于如何从这个jar或批处理文件执行程序的帮助吗?谢谢!

3 个答案:

答案 0 :(得分:3)

是的,这很正常。您必须从命令行或批处理脚本启动它。尝试使用批处理脚本(如果你有一个MANIFEST.MF)添加到你的jar中。

java -ea -jar Application.jar <Parameters>

或其他:

java -cp jar-file packageOfMainClass.MainClass

答案 1 :(得分:1)

在构建jar文件时,您已经指定了Main-Class。但是,您没有在清单文件中指定所需的库,仅在运行应用程序时在ant文件中指定。

将另一个清单属性写入ant文件。 name应为Class-Path,值为 space 分隔的库列表。请查看here (Wikipedia)示例。

之后,您的申请应在进入

时开始
java -jar Guix.jar

然后按照in this question描述的步骤使其双击即可启动。

答案 2 :(得分:0)

运行jar文件的替代方法

  1. java -jar jar-file

  2. java -cp jar-file MainClassNameFullyQualified