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

<p>я создал исполняемый файл <code>.jar</code>. как я могу выполнить <code>.jar</code>, используя пакетный файл, не упоминая путь к классу?</p>

<p>в windows вы можете использовать следующую команду.</p><pre><code>start javaw -jar jarfile.jar </code></pre><p>при этом окно командной строки не остается открытым.</p>

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

<p>если вы хотите, чтобы пакетный файл запускал jar-файл, создайте пустой файл с именем runjava.bat с содержимым:</p><pre><code>java -jar "c:\myjarfile.jar" </code></pre>

<p>вы можете создать командный файл с расширением <code>.bat</code> со следующим содержимым</p><p>используйте <code>java</code> для <code>.jar</code>, который не имеет пользовательского интерфейса и является приложением командной строки</p><pre><code>@echo off start java -jar <your\_jar\_file\_name>.jar </code></pre><p>используйте <code>javaw</code> для <code>.jar</code> с пользовательским интерфейсом</p><pre><code>@echo off start javaw -jar <your\_jar\_file\_name>.jar </code></pre><p>пожалуйста, убедитесь, что ваш <code>java\_home</code> установлен в переменных окружения.</p>

<pre><code>cd "your file location without inverted commas" </code></pre><p><strong> пример: </strong>cd c:\users *****\desktop\directory\target</p><pre><code>java -jar myjar.jar </code></pre><p><strong> пример файла bat выглядит так: </strong></p><pre><code>@echo off cd c:\users\****\desktop\directory\target java -jar myjar.jar </code></pre><p>это будет работать нормально.</p>

<p>чтобы запустить файл <code>.jar</code> из командной строки, просто используйте:</p><pre><code>java -jar yourjar.jar </code></pre><p>чтобы сделать это как командный файл, просто скопируйте команду в текстовый файл и сохраните ее как <code>.bat</code>:</p><pre><code>@echo off java -jar yourjar.jar </code></pre><p><code>@echo off</code> просто гарантирует, что вторая команда не будет напечатана.</p>

<p>если двойной щелчок по файлу .jar в проводнике windows работает, то вы сможете использовать это:</p><pre><code>start myapp.jar </code></pre><p>в вашем командном файле.</p><p>команда windows <code>start</code> делает то же самое за кулисами, как двойной щелчок по файлу.</p>

<pre><code>java -jar "c:\\myjarfile.jar" </code></pre><p>вам может понадобиться добавить <code>"\\"</code> к команде. попробуй это!</p>

<p>мое понимание вопроса заключается в том, что оп пытается избежать указания пути к классам в своей командной строке. вы можете сделать это, указав путь к классам в файле manifest. </p><p>в манифесте:</p><pre><code>class-path: library.jar </code></pre><p>этот документ дает более подробную информацию:</p><p> <a href="http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html">http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html</a> </p><p>чтобы создать jar-файл с использованием файла манифеста с именем manifest, вы можете использовать следующую команду:</p><pre><code>jar -cmf manifest myjar.jar <class files> </code></pre><p>если вы укажете относительные пути классов (т. е. другие jar-файлы в том же каталоге), то вы можете переместить jar-файл, и пакетный файл, упомянутый в ответе mdm, все равно будет работать.</p>

<p>вы должны убедиться, что вы указали classpath в файле manifest.mf. если вы используете maven для упаковки, вы можете настроить следующие плагины:<br/><br/> 1. maven-depedency-плагин:<br/> 2. maven-банка-плагин:</p><pre><code><plugin> <artifactid>maven-dependency-plugin</artifactid> <version>${version.plugin.maven-dependency-plugin}</version> <executions> <execution> copy-dependencies <phase>package</phase> <goals> copy-dependencies </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> </code></pre><p>полученный файл манифеста будет упакован в исполняемый файл jar под meta-inf и будет выглядеть так:</p><pre><code>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 </code></pre><p>сценарий windows будет выглядеть так:</p><pre><code>@echo on echo "starting up the myexecjar application..." java -jar myexecjar-1.0.0-snapshot.jar </code></pre><p>это должен быть полный конфиг для сборки исполняемого jar с использованием maven :)</p>

<p>шаги 1- создайте/экспортируйте исполняемый файл jar из вашего проекта.</p><p>2- создайте файл .bat со следующим содержанием</p><pre><code>@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 </code></pre><p>3-set classpath требуется, если вы используете какие-либо внешние jar-файлы.</p><p>4- поместите файл .bat и файл jar в одну папку.</p><p>5- в соответствии с командой java -cp укажите точное местоположение файла jar и полное имя основного метода, а затем список аргументов в соответствии с требованием.</p>

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

<p>вы можете использовать следующую команду в только что созданном файле .bat: </p><pre><code>@echo off call c:\swdtools\**path\to\java**\java\_1.7\_64\jre\bin\java -jar workspace.jar </code></pre><p>пожалуйста, укажите путь к java, если в системе установлено несколько версий java, и убедитесь, что вы указали основной метод, и файл манифеста создается при создании файла jar.</p>