2010-04-12 186 views
36

我創建了一個可執行文件.jar。我如何使用批處理文件執行.jar而不提及類路徑?從批處理文件運行.jar

+5

老兄,格式化問題不是代碼段。 – 2010-04-12 12:40:22

回答

3

如果雙擊Windows Explorer中的.jar文件的工作,那麼你應該能夠使用:

start myapp.jar 
在批處理文件

Windows start命令在雙擊文件時在幕後執行完全相同的操作。

+0

它給出了錯誤窗口找不到myapp.jar(我的jar文件)。 – Arivu2020 2010-04-13 05:52:58

+0

@ Arivu2020:你在正確的目錄嗎?也許你的批處理文件在試圖運行jar文件之前需要做'cd c:\ path \ to \ my \ stuff'? – RichieHindle 2010-04-13 08:41:05

0

就像您在命令控制檯中所做的一樣。在批處理文件中完全複製這些命令。

2

運行在命令行.jar文件,只需使用:

java -jar YourJar.jar 

要做到這一點作爲一個批處理文件,只需將命令複製到一個文本文件並將其保存爲.bat

@echo off 
java -jar YourJar.jar 

@echo off只是確保不打印第二個命令。

+0

'@echo ...'僅適用於windows ... – 2010-04-12 13:29:57

+0

@Carlos:我認爲OP要求一個批處理文件,他們使用的是Windows。 – mdm 2010-04-12 14:20:55

+0

只是一個筆記... – 2010-04-12 15:01:00

12

如果你想有一個批處理文件來運行一個jar文件,創建一個名爲runjava.bat與內容的空白文件:

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

您可能需要增加"\\"的命令。嘗試這個!

43

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

start javaw -jar JarFile.jar 

通過這樣做,命令提示符窗口不會保持打開狀態。

+0

感謝分享! :) – MikkoP 2012-10-06 13:57:17

+0

Windows無法找到'javaw'。我通過'啓動JarFile.jar'(將.jar文件與批處理文件放在同一文件夾中)解決了這個問題。 OMG! – NiteCyper 2014-11-21 13:39:47

+0

OMG!你現在如何阻止它? – shyam 2015-05-21 09:27:34

1

我對這個問題的理解是,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的答案中提到的批處理文件仍然可以工作。

21

有一個解決方案,不需要在.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

+1

這是偉大的,但離開驅動器的信。 – guthrie 2014-01-08 01:30:19

+3

你說得對。必須使用'%〜dp0'來代替'%〜p0'以獲得驅動器盤符。我將編輯答案。 – BrunoMedeiros 2014-01-16 17:36:40

5
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 

這將工作正常。

+0

爲什麼不用引號(引號)?如果路徑名稱中有空格,則需要引號。 – Rob 2013-01-30 05:56:00

-1

你shoult試試這個:

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

您可以創建.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已設置在環境變量中。

+0

準確,準確的信息。非常感謝! – 2016-02-12 08:49:26

1

您需要確保在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 :)

0

可以在蝙蝠使用以下命令可執行的JAR文件新創建完整的配置:

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

請給了java的路徑,如果有是系統中安裝的多個Java版本,並確保您指定的主要方法和清單文件是在創建jar文件時創建的。