从batch file运行.jar

我创build了一个可执行的.jar文件。 如何使用batch file执行.jar而不提及类path?

在Windows上,您可以使用以下命令。

 start javaw -jar JarFile.jar 

通过这样做,命令提示符窗口不会保持打开状态。

有一个解决scheme,不需要在.bat中指定jar文件的path。 这意味着只要.bat文件总是位于与jar相同的目录中,就可以在文件系统中移动jar而不进行任何更改。 .bat代码是:

 java -jar %~dp0myjarfile.jar %* 

基本上%0会扩展到.bat完整path, %~dp0扩展到除文件名外的.bat完整path。 所以%~dp0myjarfile.jar是与.bat文件%~dp0myjarfile.jar的完整path。 %*将把所有的parameter passing给.bat并将其传递给Java程序。 (请参阅: http : //www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true )

如果您想要一个batch file运行一个jar文件,请使用以下内容创build一个名为runjava.bat的空白文件:

 java -jar "C:\myjarfile.jar" 

您可以使用以下内容创build带.bat扩展名的batch file

使用java .jar ,没有UI,是一个命令行应用程序

 @ECHO OFF start java -jar <your_jar_file_name>.jar 

使用具有UI的.jar javaw

 @ECHO OFF start javaw -jar <your_jar_file_name>.jar 

请确保您的JAVA_HOME已设置在环境variables中。

cd“您的文件位置没有引号”

例如:cd C:\ Users ** * \ Desktop \ directory \ target

java -jar myjar.jar

示例bat文件看起来像这样

 @echo OFF cd C:\Users\****\Desktop\directory\target java -jar myjar.jar 

这将工作正常。

如果双击Windows资源pipe理器中的.jar文件,那么你应该可以使用这个:

 start myapp.jar 

在你的batch file中。

Windows start命令在双击文件后在幕后执行完全相同的操作。

要从命令行运行.jar文件,只需使用:

 java -jar YourJar.jar 

要将其作为batch file执行,只需将该命令复制到文本文件并将其另存为.bat

 @echo off java -jar YourJar.jar 

@echo off只是确保第二个命令不被打印。

 java -jar "C:\\myjarfile.jar" 

您可能需要将"\\"添加到该命令。 尝试这个!

我对这个问题的理解是,OP正试图避免在他的命令行中指定一个类path。 您可以通过将类path放在清单文件中来做到这一点。

在清单中:

 Class-Path: Library.jar 

本文提供了更多的细节:

http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

要使用名为MANIFEST的清单文件创buildjar,可以使用以下命令:

 jar -cmf MANIFEST MyJar.jar <class files> 

如果你指定相关的类path(即在同一目录中的其他jar子),那么你可以移动jar子的周围,在MDM的答案中提到的batch file仍然工作。

您需要确保您在MANIFEST.MF文件中指定类path。 如果您使用Maven进行打包,则可以configuration以下插件:

1. maven-depedency-plugin:
2. maven-jar-plugin:

 <plugin> <artifactId>maven-dependency-plugin</artifactId> <version>${version.plugin.maven-dependency-plugin}</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>true</overWriteSnapshots> <includeScope>runtime</includeScope> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>${version.plugin.maven-jar-plugin}</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest> </archive> </configuration> </plugin> 

生成的清单文件将打包在META-INF下的可执行文件jar中,如下所示:

 Manifest-Version: 1.0 Implementation-Title: myexecjar Implementation-Version: 1.0.0-SNAPSHOT Built-By: razvanone Class-Path: lib/first.jar lib/second.jar Build-Jdk: your-buildjdk-version Created-By: Maven Integration for Eclipse Main-Class: ro.razvanone.MyMainClass 

Windows脚本看起来像这样:

 @echo on echo "Starting up the myexecjar application..." java -jar myexecjar-1.0.0-SNAPSHOT.jar 

这应该是使用Maven构build可执行jar的完整configuration:)

就像你在命令控制台中所做的一样。 在batch file中完全复制这些命令。

您可以在新创build的.bat文件中使用以下命令:

 @echo off call C:\SWDTOOLS\**PATH\TO\JAVA**\java_1.7_64\jre\bin\java -jar workspace.jar 

如果在系统中安装了多个Java版本,请给出java的path,并确保在创buildjar文件时指定了创buildmain方法和manifest文件。

你试试这个:

 java -cp youJarName.jar your.package.your.MainClass