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

我有一个Java应用程序和一个构build文件,其中的任务之一,有一个任务,从应用程序创build一个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> 

构build文件运行完美,jar被创build,应用程序运行。 我想让用户通过点击单个文件(jar或batch file)来启动应用程序。 我试图点击生成的可执行jar文件,但没有任何反应。 这是正常的吗? 有人可以给我一个如何从这个jar或batch file执行程序的帮助吗? 谢谢!

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

写另一个清单属性到蚂蚁文件。 该name应该是Class-Path ,它是一个空格分隔的库列表。 看这里(维基百科)的例子。

之后,你的应用程序应该开始进入

 java -jar Guix.jar 

然后按照此问题中描述的步骤使其双击可启动。

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

 java -ea -jar Application.jar <Parameters> 

否则:

 java -cp jar-file packageOfMainClass.MainClass 

运行jar文件的其他方法

  1. java -jar jar文件

  2. java -cp jar-file MainClassNameFullyQualified