[英]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.