it-swarm.com.ru

Запустите .jar из командного файла

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

40
Arivu2020

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

start javaw -jar JarFile.jar

При этом окно командной строки не остается открытым.

49
Jleuleu

Существует решение, которое не требует указания пути к файлу JAR внутри .bat. Это означает, что jar можно перемещать в файловой системе без изменений, если файл .bat всегда находится в том же каталоге, что и jar. Код .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 )

21
BrunoMedeiros

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

Java -jar "C:\myjarfile.jar"
15
Jonno_FTW

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

10
Nagarajan S R
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

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

5
BRjava

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

Java -jar YourJar.jar

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

@echo off
Java -jar YourJar.jar

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

5
mdm

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

start myapp.jar

в вашем командном файле.

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

3
RichieHindle
Java -jar "C:\\myjarfile.jar"

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

2
Venkat

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

В манифесте:

Class-Path: Library.jar

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

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

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

jar -cmf MANIFEST MyJar.jar <class files>

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

1
merlin2011

Вы должны убедиться, что вы указали classpath в файле 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>

Полученный файл манифеста будет упакован в исполняемый файл 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

Это должен быть полный конфиг для сборки исполняемого jar с использованием Maven :)

1
razvanone

Шаги 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

3-set classpath требуется, если вы используете какие-либо внешние jar-файлы.

4- Поместите файл .bat и файл jar в одну папку.

5- В соответствии с командой Java -cp укажите точное местоположение файла JAR и полное имя основного метода, а затем список аргументов в соответствии с требованием.

0
JitenS

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

0
BalusC

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

@echo off
call C:\SWDTOOLS\**PATH\TO\Java**\Java_1.7_64\jre\bin\Java -jar workspace.jar  

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

0
bosari