Загрузить PDF
Загрузить PDF
Из этой статьи вы узнаете, как открывать и запускать исполняемые JAR-файлы на компьютере под управлением Windows или Mac OS X. Файлы JAR (Java Archive) содержат данные, которые используются программами Java. Большинство JAR-файлов представляют собой библиотеки (хранилища данных), к которым обращаются разные программы, поэтому JAR-файлы запустить нельзя (если дважды щелкнуть по такому файлу, ничего не произойдет). Аналогично, большинство исполняемых JAR-файлов являются установочными файлами для установки приложений или программ. Если у вас не получается запустить JAR-файл, проверьте, совместим ли он с операционной системой.
-
1
Установите Java на компьютере (если нужно). JAR-файлы нельзя запустить, если на компьютере нет Java. Перейдите на веб-сайт Java по адресу https://www.java.com/ru/download/ и нажмите «Загрузить Java бесплатно», а затем установите Java.
- Возможно, придется перезагрузить компьютер.
-
2
Дважды щелкните по JAR-файлу. Если он является исполняемым и на компьютере есть Java, файл должен открыться. Если он не открывается, перейдите к следующему шагу.
- Возможно, откроется всплывающее окно с запросом, какую программу использовать, чтобы открыть файл. В этом случае нажмите «Java (TM)» > «ОК».
-
3
Убедитесь, что JAR-файл является исполняемым файлом. Исполняемые JAR-файлы, предназначенные для установки программ, отличаются от библиотечных JAR-файлов, которые используются другими программами. У библиотечных JAR-файлов пользовательских интерфейсов нет (как у исполняемых JAR-файлов), поэтому такие файлы нельзя запустить.
- Например, многие JAR-файлы, которые хранятся в папках с данными программ, не являются исполняемыми файлами.
- Если вы скачали JAR-файл из интернета, убедитесь, что он совместим с Windows, а не с Mac OS X.
-
4
Обновите Java. Если при двойном щелчке по JAR-файлу появляется сообщение об ошибке, обновите Java. Для этого:
- откройте меню «Пуск»
;
- прокрутите вниз и щелкните по папке «Java»;
- нажмите «Проверить наличие обновлений»;
- нажмите «Обновить сейчас» на вкладке «Обновление».
- откройте меню «Пуск»
-
5
Еще раз дважды щелкните по JAR-файлу. Если файл опять не откроется, он не является исполняемым, то есть его нельзя запустить.
Реклама
-
1
Установите Java на компьютере (если нужно). JAR-файлы нельзя запустить, если на компьютере нет Java. Перейдите на веб-сайт Java по адресу https://www.java.com/ru/download/ и нажмите «Загрузить Java бесплатно», а затем установите Java.
- Открывая файл, который не принадлежит компании Apple, нажмите «ОК» (в окне с предупреждением), откройте меню Apple, нажмите «Системные настройки» > «Безопасность и конфиденциальность», разблокируйте меню, нажмите «Все равно открыть» (рядом с именем файла), а затем нажмите «Открыть», когда появится запрос.
-
2
Дважды щелкните по JAR-файлу. Если он является исполняемым и на компьютере есть Java, файл должен открыться. Если он не открывается, перейдите к следующему шагу.
-
3
Убедитесь, что JAR-файл является исполняемым файлом. Исполняемые JAR-файлы, предназначенные для установки программ, отличаются от библиотечных JAR-файлов, которые используются другими программами. У библиотечных JAR-файлов пользовательских интерфейсов нет (как у исполняемых JAR-файлов), поэтому такие файлы нельзя запустить.
- Например, многие JAR-файлы, которые хранятся в папках с данными программ, не являются исполняемыми файлами.
- Если вы скачали JAR-файл из интернета, убедитесь, что он совместим с Mac OS X, а не с другой операционной системой.
-
4
Обновите Java. Если при двойном щелчке по JAR-файлу появляется сообщение об ошибке, обновите Java. Для этого:
- откройте меню «Apple»
;
- нажмите «Системные настройки»;
- нажмите «Java»;
- перейдите на вкладку «Обновить»;
- нажмите «Обновить сейчас».
- откройте меню «Apple»
-
5
Еще раз дважды щелкните по JAR-файлу. Если файл опять не откроется, он не является исполняемым, то есть его нельзя запустить.
Реклама
Советы
- Java-программы должны работать на любой платформе. Если это не так, то либо код программы содержит ошибки, либо эта программа является узкоспециализированной, то есть требует наличия определенных системных ресурсов или программ.
- JAR-файл может быть программой или библиотекой. Если он является библиотекой, в нем нет встроенного пользовательского интерфейса, поэтому запускать такой файл нет смысла.
Реклама
Предупреждения
- Java более безопасный, чем большинство других языков программирования, но вредоносное программное обеспечение, написанное на Java, все еще существует. Будьте осторожны, когда запускаете JAR-файлы, скачанные из интернета.
Реклама
Об этой статье
Эту страницу просматривали 270 616 раз.
Была ли эта статья полезной?
An interesting side effect of this causes a problem when starting runnable jar files in the command prompt.
If you try (in a command prompt):
jarfile.jar parameter
No joy, because this is being translated to the following (which doesn’t work):
javaw.exe -jar jarfile.jar parameter
However, the following command does work:
java.exe -jar jarfile.jar parameter
If you change the association in file manager as described above to:
"C:Program FilesJavaj2re1.4.2_04binjava.exe" -jar "%1" %*
Then you can type:
jarfile.jar parameter
in the command prompt and it will now work!
EDIT:(However you then get a black console window when you run a form based (non console) Java app, so this is not an ideal solution)
If you run these jar files by double clicking them in windows, no parameters will be passed so your Java code needs to handle the stack overflow exception and include a «press a key» function at the end or the window will just disappear.
In order to pass a parameter in windows you have to create a shortcut to the jar file, which includes the parameter in the target line (right click on the shortcut and select properties) you can not add parameters to the jar file icon itself in this way.
There isn’t a single, consistent solution here, but you would have the same problem with any other console application.
There is a windows freeware application called «bat to exe» which you can use to create an exe file from a .bat file with the apropriate command line in it. you can also embed the jar file in the exe with this application, and make it clean it up when it has finished running, so this may be a more elegant solution.
An interesting side effect of this causes a problem when starting runnable jar files in the command prompt.
If you try (in a command prompt):
jarfile.jar parameter
No joy, because this is being translated to the following (which doesn’t work):
javaw.exe -jar jarfile.jar parameter
However, the following command does work:
java.exe -jar jarfile.jar parameter
If you change the association in file manager as described above to:
"C:Program FilesJavaj2re1.4.2_04binjava.exe" -jar "%1" %*
Then you can type:
jarfile.jar parameter
in the command prompt and it will now work!
EDIT:(However you then get a black console window when you run a form based (non console) Java app, so this is not an ideal solution)
If you run these jar files by double clicking them in windows, no parameters will be passed so your Java code needs to handle the stack overflow exception and include a «press a key» function at the end or the window will just disappear.
In order to pass a parameter in windows you have to create a shortcut to the jar file, which includes the parameter in the target line (right click on the shortcut and select properties) you can not add parameters to the jar file icon itself in this way.
There isn’t a single, consistent solution here, but you would have the same problem with any other console application.
There is a windows freeware application called «bat to exe» which you can use to create an exe file from a .bat file with the apropriate command line in it. you can also embed the jar file in the exe with this application, and make it clean it up when it has finished running, so this may be a more elegant solution.
- Follow this answer, if you’ve got a
jar
file, and you need to run it - See troubleshooting sections for hints to solve most common errors
Introduction
There are several ways to run java application:
java -jar myjar.jar
— is the default option to run applicationjava -cp my-class-path my-main-class
orjava -classpath my-class-path my-main-class
java --module-path my-module-path --module my-module/my-main-class
- Deployment to an enterprise server. It’s when you have
war
orear
file. We’ll omit the explanation for this
case
In this answer I’ll explain, how to run a jar
if you have to run it manually, give hints to resolve common problems.
java -jar
Start with the most common option: run the jar
file using the -jar
. Example:
java -jar myjar.jar
If it fails:
- with
no main manifest attribute
, then thejar
is not executable:- If you’re trying to build a
jar
see Can’t execute jar- file: «no main manifest attribute» - Otherwise, proceed with classpath or module-path solution below
- If you’re trying to build a
- with other error, then see «Troubleshooting» section below
Classpath or module path
If -jar
failed, then the jar should be run using classpath or module-path.
Module-path is used, when an application is modular itself.
JPMS — Java Platform Module System — is a modern way to develop, distribute and run applications. For details:
- Watch excellent Modular Development with JDK 9 by Alex Buckley
- See awesome-java-module-system
To run a jar:
- Determine if it’s modular or not:
- Invoke:
jar --describe-module --file=path-to-jar-file
- Invoke:
- Examine output:
- If you see
No module descriptor found.
in the first line, then proceed with classpath solution below - If you see something similar to:
org.diligentsnail.consoleconsumer@1.0-SNAPSHOT jar:file:///home/caco3/IdeaProjects/maven-multi-module-project-demo/jars/console-consumer.jar!/module-info.class requires java.base mandated requires org.diligensnail.hellolibrary
continue with
module-path
solution below - If you see
See also: List modules in jar file
Classpath
Try the following:
java -cp my-jar.jar my-main-class
-cp
is the same as-classpath
my-jar.jar
is the jar to runmy-main-class
is name of the class withstatic void main(String[])
method
Example:
java -cp jars/console-consumer.jar org.diligentsnail.consoleconsumer.Main
Module-path
Try the following command:
java --module-path my-jar.jar --module my-module-name/my-main-class
my-jar.jar
is thejar
to runmy-module-name
is name of the module wheremy-main-class
belongs- Usually
my-module-name
is in themodule-info.java
file
- Usually
my-main-class
— the class with thestatic void main(String[])
method
If it fails with FindException
:
- Example of message:
Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.fxml not found, required by org.diligentsnail.javafxconsumer
- Usually, this means the
my-jar.jar
has a dependency on the otherjar
.
For example, the application uses a third party library.
See «Supplying dependencies» below
Troubleshooting
UnsupportedClassVersionError
Update java. See List of Java class file format major version numbers?
NoClassDefFoundError
, NoSuchMethodError
, NoSuchFieldError
See:
- «Supplying dependencies» section
- Why am I getting a NoClassDefFoundError in Java?
Supplying dependencies
An Error
or Exception
is thrown when an application run with missing or out of date dependencies.
Common exceptions and errors:
NoClassDefFoundError
,NoSuchFieldError
,NoSuchMethodError
ClassNotFoundException
,NoSuchFieldException
,NoSuchMethodException
FindException
To supply dependencies:
- Determine the list of dependencies
- Usually it’s a list of
jar
or can be a list of directories or both
- Usually it’s a list of
- Join the list with
:
if you’re running Unix,;
— if you’re on Windows - Invoke java with
-classpath
or--module-path
Example
- Project maven-multimodule-project-demo
- I’m trying to run
console-consumer.jar
:- Command:
java -classpath jars/console-consumer.jar org.diligentsnail.consoleconsumer.Main
jars/console-consumer.jar
is thejar
I’m trying to runorg.diligentsnail.consoleconsumer.Main
is the class with main method
- Command:
- Error I get:
Exception in thread "main" java.lang.NoClassDefFoundError: org/diligentsnail/hellolibrary/Hello at org.diligentsnail.consoleconsumer.Main.main(Main.java:11) Caused by: java.lang.ClassNotFoundException: org.diligentsnail.hellolibrary.Hello at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ... 1 more
- Missing dependency is
jars/hello-library.jar
- Correct command:
java -classpath jars/console-consumer.jar:jars/hello-library.jar org.diligentsnail.consoleconsumer.Main