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


229

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

java -jar helloworld.jar

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


1
Выполните шаги, описанные здесь: Выполнение Jar на Vista с двойным щелчком мыши
RealHowTo

Ответы:


124

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

Или это:

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

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


13
я думаю, что самый простой способ - это щелкнуть правой кнопкой мыши любой файл jar> открыть с помощью и выбрать «среда выполнения Java». :)
Kassem

при этом всегда выдает мне эту ошибку "Java платформа SE двоичная перестала работать" ... Кто-нибудь может помочь, в чем может быть проблема?
Файзан

1
@Faizan - Ваша проблема звучит как отдельная проблема. Я вижу несколько результатов SO и Google для "Бинарная платформа Java Java перестала работать". Я бы проверил это.
Брайан Келли

26
в win 7 нет вкладки «Типы файлов» в параметрах папок
Раду Симионеску

79

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

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


Спасибо за совет, если бы только был способ избавиться от этих маленьких (не) «пригодных для использования» новых коробок
LoG

55

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

java -jar MyJavaTool.jar

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


Но как выполняется .bat? Будет ли это той же стратегией, чтобы приложение Java открывало сеанс командной строки?
Ungeheuer

1
Ну, нет, вы бы просто открыть файл летучей мыши. Я не уверен, что понимаю ваш вопрос.

26

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

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

4
1) Это не будет работать на Mac. или Unix. 2) Создает ненужный файл. 3) Лучшие ответы были предоставлены более 2 лет назад. 4) И это слово «ты».
Эндрю Томпсон

Отличный способ запустить банку на Windows! Он также не скрывает ввод командной строки, поэтому я смог понять, почему мой jar не работает так, как я думал. Спасибо.
Джо

15

Интересный побочный эффект этого вызывает проблему при запуске запускаемых файлов 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

Сначала установите путь к cmd (командная строка):

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

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

java -jar yourProgramname.jar 

9

В Windows XP * вам нужно всего 2 команды оболочки :

   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


1
Анонимный пользователь проверил это с Windows 7 (JRE 7). Они говорят, что это работает, если вы запускаете cmd от имени администратора.
Джереми Стейн

Лучшее решение в моих глазах. Работает до Windows 10. Команды ftype и assoc должны выполняться в окнах командной строки с правами администратора.
SixDoubleFiveTreeTwoOne

7

Есть способ, не требуя от пользователя вносить изменения на своем ПК. 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

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


5

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

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

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

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


4

В Regedit, открыть HKEY_CLASSES_ROOT\Applications\java.exe\shell\open\command

Дважды щелкните по умолчанию слева и добавьте -jar между java.exeпутем и %1аргументом " ".


Это было оно. Спасибо. Все остальное не помогло.
raedma

3

Вы хотите проверить пару вещей; если это ваш собственный jar-файл, убедитесь, что вы определили Main-класс в манифесте. Поскольку мы знаем, что вы можете запустить его из командной строки, нужно также создать ярлык Windows и изменить свойства (вам придется осмотреться, у меня нет машины с Windows, чтобы посмотреть), чтобы команда, которую он выполняет при открытии, является упомянутой вами командой java -jar.

Другое дело: если что-то не запутано, оно должно работать в любом случае; проверьте и убедитесь, что у вас есть Java, связанный с расширением .jar.


1

К сожалению, это не так просто, так как Microsoft удалила расширенный диалог ассоциации файлов в последних выпусках Windows. - В более новых версиях Windows вы можете указать только приложение, которое будет использоваться для открытия файла .jar.

Исправление открытия файла .jar в Windows требует двух шагов.

  1. Откройте панель управления и выберите «Программы по умолчанию -> Установить ассоциации». Найдите расширение .jar ( исполняемый файл JAR ) и выберите Java в качестве программы по умолчанию, чтобы открыть это расширение. Вероятно, он будет указан как « Java Platform (SE) ». Возможно, более быстрой альтернативой является прямой щелчок правой кнопкой мыши на файле .jar, а затем измените связанную программу, нажав кнопку «Изменить ...».

  2. Теперь откройте regedit и откройте HKEY_CLASSES_ROOT\jarfile\shell\open\commandключ. К счастью для нас, мы можем указать параметры для (Default)значения. В моей системе Windows это выглядит так: C:\app\32\jre7\bin\javaw.exe" -jar "%1" %*но в большинстве случаев это следующая строка:C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

НОТЫ:

  • Не используйте java.exeтам, поскольку это откроет окно оболочки.
  • Jarfix инструмент упоминается в этой теме , скорее всего , ничего не делает больше , чем изменения реестра для вас. Я предпочитаю метод ручного изменения реестра, так как это означает, что системный администратор может «протолкнуть» изменение реестра на все рабочие станции в сети.

1

У меня была такая же проблема в Windows 10. Я исправил ее, щелкнув правой кнопкой мыши на « helloworld.jar », и перейдя в свойства, нажмите кнопку « Изменить» в разделе «Открывается с помощью» и выберите « Найти другое приложение на этом ПК ». В диалоговом окне « Открыть с помощью ... » перейдите в папку с папкой Java на вашем ПК, откройте соответствующую папку jdk, а затем откройте папку bin и выберите « javaw.exe ». Тогда в следующий раз ваш " helloworld.jar " откроется обычным способом.

Обычный пример расположения Java: " C: \ Program Files (x86) \ Java \ jdk1.8.0_111 \ bin ".


1

Другой способ запуска файлов JAR с помощью щелчка / двойного щелчка заключается в добавлении «-jar» к имени файла. Например, вы бы переименовали файл MyJar.jarв -jar MyJar.jar.

Конечно, вы должны иметь .classфайлы, связанные с java.exe. Это может работать не во всех случаях, но в большинстве случаев это работает для меня.


1

PreScript : если ваша подсказка появляется и сразу исчезает, причина этого в том, что ваша программа выполняется и автоматически закрывается. Попробуйте положить сканер в конце, чтобы завершить, и он будет заставлять ваш запрос ждать ввода перед завершением. (Или используйте задержку, может быть)

Был в той же ситуации, когда запуск .jar из cmd работал нормально, но двойной щелчок ничего не делал.

Решение: Откройте любой текстовый редактор и напишите в командной строке: java -jar Example.jar Сохраните файл как файл .bat. Запустите этот bat-файл, чтобы получить необходимый вывод.

Сделав шаг вперед, вы можете конвертировать этот bat-файл в exe-файл, используя простой графический инструмент, такой как Bat To Exe Converter.

Теперь вы можете поделиться своим .jar как дистрибутивом в файле .exe, который может использовать каждый, просто убедитесь, что вы храните все файлы вместе. (Особенно .jar и .bat причина файла .bat - только приглашение cmd) (Как это выглядит логично)

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


1

использовать .batфайл:

Поместите вашу команду в файл .bat. здесь ваша команда будет java -jar path\yourJarName.jar. Something like: java -jar C:\workspace\myApplication.jar

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


0

Если вы используете eclipse для создания ваших java-файлов, вы можете экспортировать их как исполняемый jar-файл. Я сделал это с моими программами, и я могу просто нажать на банку, и она будет работать так же. Это будет работать на обоих окнах, а также OS X.


Похоже, не гарантируется работа, хотя, согласно этому вопросу
doubleDown

0

Создание start.bat было единственной вещью, которая работала для меня.

откройте текстовый документ и введите. java -jar все, что твое называется .jar

сохранить как start.bat в той же папке, что и файл .jar, который вы хотите выполнить. а затем запустить. летучая мышь


0

Если вам нужно запустить файл JAR, дважды щелкнув по нему, вы должны создать его как « Runnable JAR ». Вы можете сделать это просто с помощью вашей IDE.

Если вы используете Eclipse, выполните следующие действия:

    To create a new runnable JAR file in the workbench:

1.From the menu bar's File menu, select Export.
2.Expand the Java node and select Runnable JAR file. Click Next.
3.In the  Opens the Runnable JAR export wizard Runnable JAR File Specification page, select a 'Java Application' launch configuration to use to create a runnable JAR.
4.In the Export destination field, either type or click Browse to select a location for the JAR file.
5.Select an appropriate library handling strategy.
Optionally, you can also create an ANT script to quickly regenerate a previously created runnable JAR file.

дополнительную информацию можно найти на странице справки Eclipse: LINK


0

Существует много способов запуска файла .jar в Windows. Один из них использует командную строку.

Шаги:

  1. Открыть командную строку (Запуск от имени администратора)
  2. Теперь напишите команду "cd \" для корневого каталога
  3. Введите «java jar filename.jar» Примечание: вы также можете использовать любые сторонние приложения, такие как WinRAR, jarfix и т. Д.


0

Создать .batфайл:

start javaw -jar %*

И выберите приложение по умолчанию, чтобы открыть .jarс этим .batфайлом.

Он закроется cmdпри запуске вашего .jarфайла.


0

Для составления:

javac  -cp ".;./mysql-connector-java-5.0.8.jar;mybatis-3.0.1.jar;ibatis-2.3.0.677.jar" MainStart.java

Для бега:

java  -cp ".;./mysql-connector-java-5.0.8.jar;mybatis-3.0.1.jar;ibatis-2.3.0.677.jar" MainStart

0

На самом деле, я тоже столкнулся с этой проблемой, я справился с этим, сделав .bat runner для моего jar-файла,

вот код:

class FileHandler{
   public static File create_CMD_Rnner(){
      int exitCode = -1625348952;
      try{
           File runner = new File(Main.batName);
           PrintWriter printer = new PrintWriter(runner);
           printer.println("@echo off");
           printer.println("title " + Main.applicationTitle);
           printer.println("java -jar " + Main.jarName + " " + Main.startCode );
           printer.println("PAUSE");
           printer.flush();
           printer.close();
           return runner;
       }catch(Exception e){
           System.err.println("Coudln't create a runner bat \n exit code: " + exitCode);
           System.exit(exitCode);
           return null;
       }
   }
}



Затем в вашем главном классе приложения сделайте это:

public class Main{
    static String jarName = "application.jar";
    static String applicationTitle = "java Application";
    static String startCode = "javaIsTheBest";
    static String batName = "_.bat";


    public static void main(String args[]) throws Exception{
        if(args.length == 0 || !args[0].equals(startCode)) {
            Desktop.getDesktop().open(FilesHandler.create_CMD_Rnner());
            System.exit(0);
        }else{
            //just in case you wanted to hide the bat
            deleteRunner();
            // Congratulations now you are running in a cmd window ... do whatever you want
            //......
            System.out.println("i Am Running in CMD");
            //......
            Thread.sleep(84600);
        }
    }


    public static void deleteRunner(){
        File batRunner = new File(batName);
        if(batRunner.exists()) batRunner.delete();
    }
}


Пожалуйста, обратите внимание, что

  1. этот код (мой код) работает только с файлом jar, а не с файлом класса.

  2. файл jar должен иметь то же имя, что и строка String "jarName" - это основной класс

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.