从批处理文件运行.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文件时创建的。
老兄,格式化问题不是代码段。 – 2010-04-12 12:40:22