Я создал исполняемый файл .jar
. Как я могу выполнить .jar
с помощью пакетного файла без указания пути к классу?
Запустить .jar из пакетного файла
Ответ 1
В Windows вы можете использовать следующую команду.
start javaw -jar JarFile.jar
Таким образом, окно командной строки не остается открытым.
Ответ 2
Существует такое решение, которое не требует указания пути файла jar внутри .bat. Это означает, что банку можно перемещать в файловой системе без каких-либо изменений, если файл .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)
Ответ 3
Если вы хотите, чтобы командный файл запускал файл jar, создайте пустой файл с именем runjava.bat с содержимым:
java -jar "C:\myjarfile.jar"
Ответ 4
Вы можете создать пакетный файл с расширением .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
установлен в переменных среды.
Ответ 5
Чтобы запустить файл .jar
из командной строки, просто используйте:
java -jar YourJar.jar
Чтобы сделать это как пакетный файл, просто скопируйте команду в текстовый файл и сохраните ее как .bat
:
@echo off
java -jar YourJar.jar
@echo off
просто гарантирует, что вторая команда не будет напечатана.
Ответ 6
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
Это будет нормально работать.
Ответ 7
Если дважды щелкнуть файл .jar в проводнике Windows, вы сможете использовать это:
start myapp.jar
в вашем пакетном файле.
Команда Windows start
делает то же самое за кулисами, как двойной щелчок по файлу.
Ответ 8
java -jar "C:\\myjarfile.jar"
Вам может потребоваться добавить "\\"
в команду. Попробуйте это!
Ответ 9
Мое понимание вопроса заключается в том, что OP пытается избежать указания пути класса в своей командной строке. Вы можете сделать это, поместив путь класса в файл манифеста.
В манифесте:
Class-Path: Library.jar
В этом документе приведены более подробные сведения:
http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html
Чтобы создать банку, используя файл манифеста с именем MANIFEST, вы можете использовать следующую команду:
jar -cmf MANIFEST MyJar.jar <class files>
Если вы укажете относительные классы-пути (т.е. другие банки в одном каталоге), вы можете переместить банку, и пакетный файл, упомянутый в ответе mdm, по-прежнему будет работать.
Ответ 10
Вам нужно указать путь к классам в файле 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 и будет выглядеть следующим образом:
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 script будет выглядеть так:
@echo on
echo "Starting up the myexecjar application..."
java -jar myexecjar-1.0.0-SNAPSHOT.jar
Это должна быть полная конфигурация для создания исполняемой банки с использованием Maven:)
Ответ 11
Точно так же, как и в командной консоли. Скопируйте именно те команды в пакетном файле.
Ответ 12
вы можете использовать следующую команду в созданном файле .bat:
@echo off
call C:\SWDTOOLS\**PATH\TO\JAVA**\java_1.7_64\jre\bin\java -jar workspace.jar
Укажите путь к java, если в системе установлено несколько версий java и убедитесь, что вы указали основной метод и файл манифеста, созданный при создании файла jar.
Ответ 13
Шаги 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 и полное имя основного метода, а затем список аргументов в соответствии с требованиями.
Ответ 14
в формате .bat
SET CLASSPATH =% Path%;
-------set java classpath и дать jar location-------- set classpath =% CLASSPATH%;../lib/MoveFiles.jar;
---------mention ваше полностью классифицированное имя класса Java для запуска, которое было дано в jar------ Java com.mits.MoveFiles pause
Ответ 15
попробуйте следующее:
java -cp youJarName.jar your.package.your.MainClass