簡體   English   中英

從批處理文件運行.jar

[英]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文件格式

SET CLASSPATH =%Path%;

-------設置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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM