Cannot run jar file: Could not find or load main class Hello
Solution 1
You go to project structure then choose "Artifacts" from the left tab. Add a new artifact and as you see here although I have a manifest selected and a Main class selected, on the left side it shows what it will add to the jar. On the right side it shows what's available(un-added). However, since I haven't added anything into my jar yet, it will only add the Manifest and none of the actual code.
You need to specify that you want to add the compile output to the jar or else it will only have the manifest and not your actual classes. You can do that by just double clicking on it. If you specify the directory above the compiled output, it will add the src as well I believe.
Update: Add external dependencies
Solution 2
i believe your manifest file must say what the main class is if you want it to auto execute.
Main-Class: Hello
otherwise you need to specify it on the command line when attempting to execute the jar. As far as how to do that with IntelliJ, I can't help you there.
java -cp hello.jar Hello
Note that the reference to the class with the main method is the fully qualified location (package.classname) but since your class has the default package, its not necessary.
Mansur Nashaev
Updated on June 05, 2022Comments
-
Mansur Nashaev almost 2 years
I create jar file in IDEA Build>Build Artifacts. But can't run it with
java -jar jarname.jar
-Error: Could not find or load main class Hello
. MANIFEST.MF file is in the /resources/META-INF/ folder. And here is the launcher class:public class Hello { public static void main(String[] args) { System.out.println("Hello World!"); } }
MANIFEST.MF:
Manifest-Version: 1.0 Main-Class: Hello
EDIT: Added artifacts setting screenshot
-
Mansur Nashaev over 7 yearswith
java -cp hello.jar Hello
i gotError: Could not find or load main class Hello
-
loesak over 7 yearsthen you need to verify that your jar was created correctly, meaning is the Hello.class in your jarfile
-
Mansur Nashaev over 7 yearsIt works. But when I added the apache io library fot the test and launched .jar, an error occurs:
java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils at Hello.main(Hello.java:10)
I understand that the issue of including libraries, but do not know how to include them -
Brion over 7 yearsorg.apache.commons.io.FileUtils is not a standard library so the program is drawing a dependency from it. When the new artifact with the green + icon, specify that you want to create with dependencies instead of empty. I'll update the answer with another screen shot in a few to help.
-
MandisaW about 4 yearsIt's worth noting that as of Apr 2020, IDEA's own HelloWorld Java tutorial (jetbrains.com/help/idea/…) doesn't include the step of adding your compile-output to the target JAR. So thanks!
-
Andrea Gorrieri almost 3 yearsstill can't add external dependencies even adding them with doble click as indicated :(