我創建了一個可執行文件.jar
。我如何使用批處理文件執行.jar
而不提及類路徑?從批處理文件運行.jar
回答
如果雙擊Windows Explorer中的.jar文件的工作,那麼你應該能夠使用:
start myapp.jar
在批處理文件
。
Windows start
命令在雙擊文件時在幕後執行完全相同的操作。
它給出了錯誤窗口找不到myapp.jar(我的jar文件)。 – Arivu2020 2010-04-13 05:52:58
@ Arivu2020:你在正確的目錄嗎?也許你的批處理文件在試圖運行jar文件之前需要做'cd c:\ path \ to \ my \ stuff'? – RichieHindle 2010-04-13 08:41:05
就像您在命令控制檯中所做的一樣。在批處理文件中完全複製這些命令。
運行在命令行.jar
文件,只需使用:
java -jar YourJar.jar
要做到這一點作爲一個批處理文件,只需將命令複製到一個文本文件並將其保存爲.bat
:
@echo off
java -jar YourJar.jar
@echo off
只是確保不打印第二個命令。
'@echo ...'僅適用於windows ... – 2010-04-12 13:29:57
@Carlos:我認爲OP要求一個批處理文件,他們使用的是Windows。 – mdm 2010-04-12 14:20:55
只是一個筆記... – 2010-04-12 15:01:00
如果你想有一個批處理文件來運行一個jar文件,創建一個名爲runjava.bat與內容的空白文件:
java -jar "C:\myjarfile.jar"
java -jar "C:\\myjarfile.jar"
您可能需要增加"\\"
的命令。嘗試這個!
我對這個問題的理解是,OP試圖避免在他的命令行中指定類路徑。您可以通過將類路徑放入清單文件中來完成此操作。
在清單:
Class-Path: Library.jar
這份文件提供了更多的細節:
http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html
要使用名爲清單中的清單文件中創建一個罐子,你可以使用下面的命令:
jar -cmf MANIFEST MyJar.jar <class files>
如果你指定了相關的class-pa (即同一目錄中的其他罐子),那麼你可以移動罐子,mdm的答案中提到的批處理文件仍然可以工作。
有一個解決方案,不需要在.bat中指定jar文件的路徑。這意味着只要.bat文件總是位於與jar相同的目錄中,jar就可以在文件系統中無變化地移動。這個。蝙蝠代碼是:
java -jar %~dp0myjarfile.jar %*
基本上%0
將擴展爲.BAT完整路徑,%~dp0
擴展到除文件名.BAT完整路徑。因此%~dp0myjarfile.jar
是與.bat文件並置的myjarfile.jar的完整路徑。 %*
將採用所有給.bat的參數並將其傳遞給Java程序。 (參見:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true)
這是偉大的,但離開驅動器的信。 – guthrie 2014-01-08 01:30:19
你說得對。必須使用'%〜dp0'來代替'%〜p0'以獲得驅動器盤符。我將編輯答案。 – BrunoMedeiros 2014-01-16 17:36:40
cd "Your File Location without inverted commas"
例如: CD C:\用戶***** \桌面\目錄\目標
java -jar myjar.jar
例如bat文件看起來像這樣:
@echo OFF
cd C:\Users\****\Desktop\directory\target
java -jar myjar.jar
這將工作正常。
爲什麼不用引號(引號)?如果路徑名稱中有空格,則需要引號。 – Rob 2013-01-30 05:56:00
你shoult試試這個:
java -cp youJarName.jar your.package.your.MainClass
您可以創建.bat
擴展具有以下內容
使用java
爲.jar
不具有UI,是一個命令行應用程序
@ECHO OFF
start java -jar <your_jar_file_name>.jar
使用javaw
爲.jar
有一個UI
@ECHO OFF
start javaw -jar <your_jar_file_name>.jar
請確保您的JAVA_HOME
已設置在環境變量中。
準確,準確的信息。非常感謝! – 2016-02-12 08:49:26
您需要確保在MANIFEST.MF文件中指定類路徑。如果您正在使用Maven做包裝,你可以配置以下插件:
1. Maven的depedency-插件:
2. Maven的JAR-插件:
<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>
生成的清單文件將被打包在可執行的JAR文件下META-INF和看起來像這樣:
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文件新創建完整的配置:
@echo off
call C:\SWDTOOLS\**PATH\TO\JAVA**\java_1.7_64\jre\bin\java -jar workspace.jar
請給了java的路徑,如果有是系統中安裝的多個Java版本,並確保您指定的主要方法和清單文件是在創建jar文件時創建的。
- 1. 從java批處理文件運行jar
- 2. 從另一個批處理文件運行批處理文件
- 3. 從一個批處理文件運行jar依賴關係
- 4. 運行批處理文件
- 5. 運行批處理文件
- 6. 從批處理文件運行vbscript
- 7. 從批處理文件運行rake
- 8. 從Emacs運行Windows批處理文件
- 9. 從java運行批處理文件
- 10. 從R運行批處理文件
- 11. 從JAR或批處理文件
- 12. 運行從另一個批處理文件批處理文件作爲admisitrator
- 13. 處理從批處理文件運行Java的錯誤
- 14. 從c執行(jar文件)批處理腳本#
- 15. 在vb.net中運行批處理文件?
- 16. 按順序運行批處理文件
- 17. phpdoc在批處理文件中運行
- 18. 使用CreateProcess運行批處理文件
- 19. 使用createProcess()運行批處理文件()
- 20. 使用php運行批處理文件
- 21. 在Mac上運行批處理文件
- 22. 批處理文件未運行代碼
- 23. 在後臺運行批處理文件
- 24. 登錄時運行批處理文件
- 25. 在Win7中運行批處理文件
- 26. 批處理文件:運行一個子
- 27. 使用批處理文件運行JavaScript
- 28. PSEXEC運行遠程批處理文件
- 29. 運行批處理文件的返回
- 30. 批處理文件運行PowerShell的
老兄,格式化問題不是代碼段。 – 2010-04-12 12:40:22