2010-04-12 2 views
36

Я создал исполнительный файл .jar. Как я могу выполнить команду .jar с использованием пакетного файла без указания пути к классу?Запустить .jar из пакетного файла

+5

Чувак, форматирование, вопрос не является сегментом кода. –

ответ

3

Если дважды щелкнув .jar файл в проводнике Windows, работает, то вы должны быть в состоянии использовать это:

start myapp.jar 

в пакетный файл.

Команда Windows start выполняет то же самое за кулисами, как двойной щелчок по файлу.

+0

Он дает окна ошибок не может найти myapp.jar (мой файл jar). – Arivu2020

+0

@ Arivu2020: Вы находитесь в правильном каталоге?Возможно, вашему пакетному файлу нужно выполнить 'cd c: \ path \ to \ my \ stuff', прежде чем пытаться запустить файл jar? – RichieHindle

0

Так же, как и в командной консоли. Скопируйте именно эти команды в пакетном файле.

2

Чтобы запустить .jar файл из командной строки, просто используйте:

java -jar YourJar.jar 

Чтобы сделать это, как пакетный файл, просто скопировать команду в текстовый файл и сохранить его как .bat:

@echo off 
java -jar YourJar.jar 

@echo off просто гарантирует, что вторая команда не будет напечатана.

+0

'@echo ...' предназначен только для окон ... –

+0

@ Карлос: Я предположил, что, когда OP запросил пакетный файл, они использовали Windows. – mdm

+0

просто примечание ... –

12

Если вы хотите пакетный файл, чтобы запустить файл банку, сделать пустой файл с именем runjava.bat с содержимым:

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

Вам может понадобиться добавить "\\" к команде. Попробуй это!

43

В Windows вы можете использовать следующую команду.

start javaw -jar JarFile.jar 

Таким образом, окно командной строки не остается открытым.

+0

Спасибо за обмен! :) – MikkoP

+0

Windows не может найти «javaw». Я исправил это, просто запустив JarFile.jar (с файлом .jar в той же папке, что и командный файл). – NiteCyper

+0

OMG! Как вы сейчас это прекратили? – shyam

1

Мое понимание вопроса заключается в том, что ОП пытается избежать указания пути класса в своей командной строке. Вы можете сделать это, поместив путь класса в файл манифеста.

В манифесте:

Class-Path: Library.jar 

Этот документ дает более подробную информацию:

http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

Чтобы создать банку, используя файл манифеста с именем MANIFEST, вы можете использовать следующую команду:

jar -cmf MANIFEST MyJar.jar <class files> 

Если вы укажете относительный класс-pa ths (т. е. другие банки в одном каталоге), тогда вы можете переместить банку, и файл партии, упомянутый в ответе mdm, по-прежнему будет работать.

21

Существует такое решение, которое не требует указания пути файла jar внутри .bat. Это означает, что банку можно перемещать в файловой системе без каких-либо изменений, если файл .bat всегда находится в том же каталоге, что и банка. .летучая код:

java -jar %~dp0myjarfile.jar %* 

В основном %0 будет расширяться на .bat полный путь, и %~dp0 расширяется до .bat полный путь, кроме имени файла. Итак, %~dp0myjarfile.jar - это полный путь к файлу myjarfile.jar, помещенному в файл .bat. %* возьмет все аргументы, переданные в .bat, и передаст их в программу Java. (См http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true)

+1

Это замечательно, но оставляет букву диска. – guthrie

+3

Вы правы. '% ~ dp0' следует использовать вместо'% ~ p0', чтобы иметь букву диска. Я отредактирую ответ. – BrunoMedeiros

5
cd "Your File Location without inverted commas" 

пример: CD C: \ Users ***** \ Desktop \ каталог \ целевой

java -jar myjar.jar 

пример летучей мыши файл выглядит следующим образом:

@echo OFF 
cd C:\Users\****\Desktop\directory\target 
java -jar myjar.jar 

Это будет нормально работать.

+0

Почему без кавычек (кавычек)? Если путь имеет пробел в имени, вам нужны перевернутые запятые. – Rob

-1

вы shoult попробовать это один:

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

Вы можете создать пакетный файл с .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 установлен в переменных окружения.

+0

Точная и точная информация. Обязательно! –

1

Необходимо указать путь к классу в файле MANIFEST.MF. Если вы используете Maven, чтобы сделать упаковку, вы можете настроить следующие плагины:

1. Maven-depedency-плагин:
2. Maven-банку-плагин:

<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 и будет выглядеть следующим образом:

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

вы можете использовать следующую команду в .bat файла заново создано:

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

Пожалуйста, дайте путь Java, если это несколько версий java, установленных в системе, и убедитесь, что вы указали основной метод и файл манифеста создается при создании файла jar.

Смежные вопросы