从批处理文件运行.jar

时间:2010-04-12 12:39:21

标签: java file batch-file

我创建了一个可执行文件.jar。如何在不提及类路径的情况下使用批处理文件执行.jar

15 个答案:

答案 0 :(得分:51)

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

start javaw -jar JarFile.jar

通过执行此操作,命令提示符窗口不会保持打开状态。

答案 1 :(得分:22)

有一个解决方案,不需要在.bat中指定jar文件的路径。这意味着只要.bat文件始终位于与jar相同的目录中,就可以在文件系统中移动jar而不进行任何更改。 .bat代码是:

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

答案 2 :(得分:15)

如果您希望批处理文件运行jar文件,请创建一个名为runjava.bat的空白文件,其中包含以下内容:

java -jar "C:\myjarfile.jar"

答案 3 :(得分:11)

您可以创建一个扩展名为.bat的批处理文件,其中包含以下内容

java用于没有用户界面并且是命令行应用程序的.jar

@ECHO OFF
start java -jar <your_jar_file_name>.jar

javaw用于具有用户界面的.jar

@ECHO OFF
start javaw -jar <your_jar_file_name>.jar

请确保您在环境变量中设置了JAVA_HOME

答案 4 :(得分:5)

要从命令行运行.jar文件,只需使用:

java -jar YourJar.jar

要将其作为批处理文件执行,只需将命令复制到文本文件并将其另存为.bat

@echo off
java -jar YourJar.jar

@echo off只是确保不打印第二个命令。

答案 5 :(得分:5)

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

这样可以正常工作。

答案 6 :(得分:3)

如果双击Windows资源管理器中的.jar文件,那么您应该能够使用它:

start myapp.jar

在您的批处理文件中。

Windows start命令在幕后完成与双击文件完全相同的事情。

答案 7 :(得分:2)

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

您可能需要在命令中添加"\\"。试试这个!

答案 8 :(得分:1)

我对这个问题的理解是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的答案中提到的批处理文件仍然有用。

答案 9 :(得分:1)

您需要确保在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的完整配置:)

答案 10 :(得分:0)

就像在命令控制台中一样。准确复制批处理文件中的那些命令。

答案 11 :(得分:0)

您可以在新创建的.bat文件中使用以下命令:

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

如果系统中安装了多个java版本,请提供java的路径,并确保在创建jar文件时指定了main方法和manifest文件。

答案 12 :(得分:0)

步骤 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方法的完全限定名称,并根据要求后跟参数列表。

答案 13 :(得分:0)

.bat文件内部格式

SET CLASSPATH =%Path%;

-------设置Java类路径并指定jar位置-------- 设置classpath =%CLASSPATH%; ../ lib / MoveFiles.jar;

---------提到要运行的Java类的完全分类名称,它在jar中给出- Java com.mits.MoveFiles 暂停

答案 14 :(得分:-1)

你应该尝试这个:

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