I\'m trying to load a jar using
@echo off
java -jar Test.jar
pause
With the manifest of
Manifest-Version: 1.0
Main-Class:
I had this error because I wrote a wrong Class-Path in my MANIFEST.MF
I had a weird issue when an incorrect entry in MANIFEST.MF was causing loading failure. This was when I was trying to launch a very simply scala program:
Incorrect:
Main-Class: jarek.ResourceCache
Class-Path: D:/lang/scala/lib/scala-library.jar
Correct:
Main-Class: jarek.ResourceCache
Class-Path: file:///D:/lang/scala/lib/scala-library.jar
With an incorrect version, I was getting a cryptic message, the same the OP did. Probably it should say something like malformed url exception while parsing manifest file.
Using an absolute path in the manifest file is what IntelliJ uses to provide a long classpath for a program.
I got it working like this:
TestClass.Java
package classes;
public class TestClass {
public static void main(String[] args) {
System.out.println("Test");
}
}
Use javac
on the command line to produce TestClass.class
. Put TestClass.class
in a folder classes/
.
MANIFEST.MF
Manifest-Version: 1.0
Main-Class: classes.TestClass
Then run
jar cfm test.jar MANIFEST.MF classes/
Then run it as
java -jar test.jar
This is very difficult to debug without complete information.
The two most likely-looking things at this point are that either the file in the jar is not stored in a directory WITHIN THE JAR, or that it is not the correct file.
You need to be storing TestClass.class - some people new at this store the source file, TestClass.java.
And you need to create the jar file so that TestClass.class appears with a path of classes. Make sure it is not "/classes". Use zip to look at the file and make sure it has a path of "classes".