[英]Run .jar from batch-file
我创建了一个可执行的.jar
文件。 如何在不提及类路径的情况下使用批处理文件执行.jar
?
在Windows上,您可以使用以下命令。
start javaw -jar JarFile.jar
通过这样做,命令提示符窗口不会保持打开状态。
有一个解决方案,不需要在.bat中指定jar文件的路径。 这意味着只要.bat文件始终位于与jar相同的目录中,就可以在文件系统中移动jar而不进行任何更改。 .bat代码是:
java -jar %~dp0myjarfile.jar %*
基本上%0
将扩展到.bat完整路径, %~dp0
扩展到除文件名之外的.bat完整路径。 所以%~dp0myjarfile.jar
是与.bat文件%~dp0myjarfile.jar
的完整路径。 %*
将获取给.bat的所有参数并将其传递给Java程序。 (参见: http : //www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr = true )
如果您希望批处理文件运行jar文件,请创建一个名为runjava.bat的空白文件,其中包含以下内容:
java -jar "C:\myjarfile.jar"
您可以使用以下内容创建扩展名为.bat
的批处理文件
使用java
for .jar
,它没有UI,是一个命令行应用程序
@ECHO OFF
start java -jar <your_jar_file_name>.jar
将javaw
用于具有UI的.jar
@ECHO OFF
start javaw -jar <your_jar_file_name>.jar
请确保您的JAVA_HOME
已在环境变量中设置。
cd "Your File Location without inverted commas"
示例: cd C:\\ Users ***** \\ Desktop \\ directory \\ target
java -jar myjar.jar
示例bat文件如下所示:
@echo OFF
cd C:\Users\****\Desktop\directory\target
java -jar myjar.jar
这样可以正常工作。
要从命令行运行.jar
文件,只需使用:
java -jar YourJar.jar
要将其作为批处理文件执行,只需将命令复制到文本文件并将其另存为.bat
:
@echo off
java -jar YourJar.jar
@echo off
只确保不打印第二个命令。
如果在Windows资源管理器中双击.jar文件,则应该可以使用:
start myapp.jar
在您的批处理文件中。
Windows start
命令在后台执行与双击文件完全相同的操作。
java -jar "C:\\myjarfile.jar"
您可能需要在命令中添加"\\\\"
。 试试这个!
您需要确保在MANIFEST.MF文件中指定类路径。 如果您使用Maven进行打包,则可以配置以下插件:
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构建可执行jar的完整配置:)
我对这个问题的理解是OP试图避免在他的命令行中指定一个类路径。 您可以通过将类路径放在清单文件中来完成此操作。
在清单中:
Class-Path: Library.jar
本文档提供了更多细节:
http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html
要使用名为MANIFEST的清单文件创建jar,可以使用以下命令:
jar -cmf MANIFEST MyJar.jar <class files>
如果你指定相对的类路径(即同一目录中的其他jar),那么你可以移动jar,mdm的答案中提到的批处理文件仍然有效。
就像在命令控制台中一样。 准确复制批处理文件中的那些命令。
您可以在新创建的.bat文件中使用以下命令:
@echo off
call C:\SWDTOOLS\**PATH\TO\JAVA**\java_1.7_64\jre\bin\java -jar workspace.jar
如果系统中安装了多个java版本,请提供java的路径,并确保在创建jar文件时指定了main方法和manifest文件。
步骤1-从项目中创建/导出可运行的jar文件。
2-使用以下内容创建.bat文件
@Echo off
set classpath="c:\jars\lib\*****.jar;c:\jars\lib\*****.jar;c:\extJars\****.jar"
java -cp %classpath%;c:\apps\applName\yourJar.jar com.****.****.MainMethod args1 args2 ...
@pause
如果您正在使用任何外部jar,则需要3- set classpath。
4-将.bat文件和jar文件放在同一文件夹中。
5-根据java -cp命令,给出确切的jar文件位置和main方法的完全限定名称,然后根据需要跟随参数列表。
里面的.bat文件格式
-------设置java classpath并给出jar位置-------- set classpath =%CLASSPATH%; ../ lib / MoveFiles.jar;
---------提到要运行的java类的完全分类名称,这是在jar中给出的------ Java com.mits.MoveFiles pause
你要试试这个:
java -cp youJarName.jar your.package.your.MainClass
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.