- 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 application 
java -cp my-class-path my-main-class or java -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 or ear 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 the jar is not executable:
 
- 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
 
 
- 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 
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 run 
my-main-class is name of the class with static 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 the jar to run 
my-module-name is name of the module where my-main-class belongs
- Usually 
my-module-name is in the module-info.java file 
 
my-main-class - the class with the static void main(String[]) method 
If it fails with FindException:
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 
 
- 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:
 
- 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