Запуск файла JAR в Windows - PullRequest
       151

Запуск файла JAR в Windows

194 голосов
/ 27 декабря 2008

У меня есть файл JAR с именем helloworld.jar . Чтобы запустить его, я выполняю следующую команду в окне командной строки:

java -jar helloworld.jar

Это отлично работает, но как мне выполнить его двойным щелчком вместо этого? Нужно ли устанавливать какое-либо программное обеспечение?

Ответы [ 25 ]

109 голосов
/ 27 декабря 2008

Самый простой маршрут - это обновление или переустановка Java Runtime Environment (JRE).

Или это:

  • Откройте проводник Windows, в меню «Инструменты» выберите «Параметры папки ...»
  • Перейдите на вкладку «Типы файлов», прокрутите вниз и выберите «Тип файла JAR».
  • Нажмите кнопку «Дополнительно».
  • В диалоговом окне «Редактировать тип файла» выберите «Открыть» в окне «Действия» и нажмите «Редактировать ...» *
  • Нажмите кнопку «Обзор» и перейдите к местоположению интерпретатора Java javaw.exe.
  • В приложении, используемом для выполнения поля действия, должно отображаться что-то похожее на C:\Program Files\Java\j2re1.4.2_04\bin\javaw.exe" -jar "%1" % (Примечание: часть, начинающаяся с 'javaw', должна быть точно такой же; другая часть имени пути может отличаться в зависимости от того, какая версия используемой Java), затем нажимайте кнопки OK, пока все диалоговые окна не закроются.

Что было украдено отсюда: http://windowstipoftheday.blogspot.com/2005/10/setting-jar-file-association.html

76 голосов
/ 07 января 2010

В Windows Vista или Windows 7 ручной редактор сопоставления файлов был удален.

Самый простой способ - запустить Jarfix , крошечный, но мощный бесплатный инструмент. Просто запустите его, и ваши Java-приложения вернутся ... снова дважды щелкните мышью.

47 голосов
/ 19 сентября 2011

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

java -jar MyJavaTool.jar

и поместите файл .bat в тот же каталог, что и ваш файл .jar.

23 голосов
/ 21 мая 2010

Если у вас есть файл jar с именем Example.jar, следуйте этим правилам:

  1. Открыть notepad.exe
  2. Запись: java -jar Example.jar
  3. Сохраните его с расширением .bat
  4. Скопируйте его в каталог, содержащий файл .jar
  5. Дважды щелкните по нему, чтобы запустить .jar файл
15 голосов
/ 22 сентября 2009

Интересный побочный эффект этого вызывает проблему при запуске запускаемых файлов JAR в командной строке.

Если вы попробуете (в командной строке):

jarfile.jar parameter

Нет радости, потому что это переводится на следующее (что не работает):

javaw.exe -jar jarfile.jar parameter

Однако следующая команда работает:

java.exe -jar jarfile.jar parameter

Если вы измените связь в файловом менеджере, как описано выше, на:

"C:\Program Files\Java\j2re1.4.2_04\bin\java.exe" -jar "%1" %*

Тогда вы можете набрать:

jarfile.jar parameter

в командной строке, и теперь она будет работать!

РЕДАКТИРОВАТЬ: (Однако вы получите черное окно консоли при запуске Java-приложения на основе форм (не консольного), так что это не идеальное решение)

Если вы запустите эти jar-файлы, дважды щелкнув их в окнах, никакие параметры не будут переданы, поэтому ваш Java-код должен обрабатывать исключение переполнения стека и включать функцию «нажать клавишу» в конце, или окно просто исчезнет. .

Чтобы передать параметр в windows, вы должны создать ярлык для файла JAR, который включает в себя параметр в целевой строке (щелкните правой кнопкой мыши по ярлыку и выберите свойства), вы не можете добавить параметры к значку файла JAR сам таким образом.

Здесь нет единого согласованного решения, но у вас возникла бы такая же проблема с любым другим консольным приложением.

Существует бесплатное приложение для Windows под названием «bat to exe», которое можно использовать для создания exe-файла из .bat-файла с соответствующей командной строкой в ​​нем. Вы также можете вставить jar-файл в исполняемый файл с этим приложением и заставить его очистить его после завершения работы, так что это может быть более элегантным решением.

11 голосов
/ 01 ноября 2012

Первый заданный путь в cmd (командная строка):

set path="C:\Program Files\Java\jre6\bin"

затем введите

java -jar yourProgramname.jar 
8 голосов
/ 07 января 2010

В Windows XP * вам нужно всего 2 shell команды:

   C:\>ftype myjarfile="C:\JRE1.6\bin\javaw.exe" -jar "%1" %* 
   C:\>assoc .jar=myjarfile  

очевидно, используя правильный путь для JRE и любое имя, которое вы хотите вместо myjarfile.

Чтобы просто проверить текущие настройки:

   C:\>assoc .jar  
   C:\>ftype jarfile  

на этот раз, используя значение, возвращаемое первой командой, если она есть, вместо jarfile.

* не тестировался в Windows 7

7 голосов
/ 27 августа 2013

Существует способ, не требующий от пользователя вносить изменения на своем ПК. Runtime.getRuntime.exec () позволяет нам запускать cmd.exe и выполнять команды внутри него. Таким образом, Java-программа может запускать себя в командной строке, когда пользователь щелкает файл .jar.

public static void main(String[] args) throws IOException {
    if(args.length == 0) {
        Process p = Runtime.getRuntime().exec("cmd.exe /c start java -jar " + (new File(NameOfClass.class.getProtectionDomain().getCodeSource().getLocation().getPath())).getAbsolutePath() + " cmd");
    } else {
        //code to be executed
    }
}
6 голосов
/ 28 декабря 2008

Помимо всех других предложений, есть еще одна вещь, которую вы должны рассмотреть. Является ли ваш helloworld.jar консольной программой? Если это так, то я не верю, что вы сможете превратить его в файл jar с двойным кликом. Консольные программы используют обычное окно оболочки cmd.exe для ввода и вывода. Обычно jar "launcher" привязан к javaw.exe, который не создает окно командной оболочки.

5 голосов
/ 18 января 2012

Я использую Windows 7 x64 и не смог использовать ни одно из этих исправлений.

Этот работал для меня в конце концов:

http://thepanz.netsons.org/post/windows7-jar-file-association-broken-with-nokia-ovi

Существует архив, который вы можете загрузить, содержащий файл .bat для запуска, но проверьте путь к самому javaw.exe !!!!

...