Ваш код: proc.StartInfo.FileName = jarName;
говорит Windows запускать файл .jar со всем, что он связывает в качестве обработчика для jarfiles. Это так же, как двойной щелчок.
Так что тот факт, что оба метода не работают, означает, что среда выполнения Java в Windows не является зарегистрированным обработчиком jarfile. В зависимости от того, какие версии JRE вы установили, большинство установщиков Open JRE этого не делают. AdoptOpenJDK начал включать опцию обработки jarfile в установщик, как мне кажется, в этом году (?).
Option 1
Исправить сопоставление файлов jar. Это должно заставить его работать на вашем другом компьютере, но вам нужно будет сделать это на любом другом компьютере, у которого есть такая же проблема.
С другой стороны, это также исправит двойной щелчок по банке,что-то, чего не делает Вариант 2 ниже.
У вас есть несколько вариантов сделать это:
- Используйте установщик JRE / JDK, который сделает это за вас (например, ). Установщик AdoptOpenJDK ).
- Сделайте это вручную. Этот конкретный ответ (не тот, который помечен как принято ) должен работать.
- Если вы не против запуска стороннего инструмента, созданного случайным незнакомцем нав Интернете jarfix будет автоматизировать ручной способ выше.
Option 2
Заставить вашу программу запускать Java, даже если она в настоящее время не связана с jarfiles,Это, вероятно, заставит его работать на большем количестве компьютеров, но не решит проблему двойного щелчка jar.
Это требует, чтобы Java уже была установлена и находилась в PATH вашей ОС. Чтобы проверить это, запустите командную строку и запустите java -version
. Если вы получили ответ, продолжайте читать. Если вы этого не сделаете, вам нужно посмотреть, как включить Java в вашу PATH.
Теперь, в вашем StartInfo
, вы хотите вызывать java
, а не свой jarfile напрямую:
proc.StartInfo.FileName = "java";
Затем вы указываете свой jar как часть аргумента:
proc.StartInfo.Arguments = " -jar " + jarName + " " + ...the rest of your args.
Вы можете заменить "java"
на "javaw"
, если знаете, что когда-либо запускаете его только в Windows.