我有一个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或批处理文件执行程序的帮助吗?谢谢!
答案 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文件的替代方法
java -jar jar-file
java -cp jar-file MainClassNameFullyQualified