从批处理文件运行.jar

问题描述:

我创建了一个可执行文件.jar。我如何使用批处理文件执行.jar而不提及类路径?从批处理文件运行.jar

+5

老兄,格式化问题不是代码段。 – 2010-04-12 12:40:22

如果双击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

就像您在命令控制台中所做的一样。在批处理文件中完全复制这些命令。

运行在命令行.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

如果你想有一个批处理文件来运行一个jar文件,创建一个名为runjava.bat与内容的空白文件:

java -jar "C:\myjarfile.jar" 

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

您可能需要增加"\\"的命令。尝试这个!

在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

我对这个问题的理解是,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

+1

这是伟大的,但离开驱动器的信。 – guthrie 2014-01-08 01:30:19

+3

你说得对。必须使用'%〜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 

这将工作正常。

+0

为什么不用引号(引号)?如果路径名称中有空格,则需要引号。 – 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已设置在环境变量中。

+0

准确,准确的信息。非常感谢! – 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文件时创建的。