开发者

problem related to MANIFEST.MF in jar

开发者 https://www.devze.com 2023-02-03 19:47 出处:网络
I have created jar in folder /usr/local/bin/niidle.jar. And I have cerated MANIFEST.MF in jar as follows:

I have created jar in folder /usr/local/bin/niidle.jar.

And I have cerated MANIFEST.MF in jar as follows:

Manifest-Version: 1.0
Main-Class: com.ensarm.niidle.web.scraper.NiidleScrapeManager
Class-Path: hector-0.6.0-17.jar

And my 'hector-0.6.0-17.jar' file is present in following folder:

/Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar

And I have added this 'hector-0.6.0-17.jar' in niidle.jar folder as follows:

niidle.jar/lib/hector-0.6.0-17.jar

And when I run this using command:

java -jar /usr/local/bin/niidle.jar arguments....

then I am getting error message as follows:

Exception in thread "main" java.lang.NoClassDefFoundError: me/prettyprint/hector/api/Serializer
    at com.ensarm.niidle.web.scraper.NiidleScrapeManager.main(NiidleScrapeManager.java:21)
Caused by: java.lang.ClassNotFoundException: me.prettyprint.hector.api.Serializer
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppCla开发者_StackOverflowssLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 1 more

And When I run again using different command as follows:

java -cp /Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar -jar /usr/local/bin/niidle.jar arguments..... 

---------------Then also I am getting the same error message:--

Exception in thread "main" java.lang.NoClassDefFoundError: me/prettyprint/hector/api/Serializer
    at com.ensarm.niidle.web.scraper.NiidleScrapeManager.main(NiidleScrapeManager.java:21)
Caused by: java.lang.ClassNotFoundException: me.prettyprint.hector.api.Serializer
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 1 more-------------

so tell me what is solution for that.or any modification in MANIFEST.MF in jar


java -cp /Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar -jar /usr/local/bin/niidle.jar arguments.....

You can't use the -cp switch together with the -jar switch.

From http://mindprod.com/jgloss/classpath.html:

If you use the -jar option, java.exe ignores the classpath. It will only look in that jar!! Try using the manifest Class-Path instead to get Java to look in auxiliary jars


And I have added this 'hector-0.6.0-17.jar' in niidle.jar folder as follows:

To my knowledge, you can't nest .jar files this way.

Since you have Class-Path: hector-0.6.0-17.jar you need to have the needle.jar and the hector-0.6.0-17.jar side by side and run niidle.jar from their common directory (using the -jar switch if you like).


Line niidle.jar/lib/hector-0.6.0-17.jar is confusing. Is niidle.jar directory or file? I'd suggest you to post your full manifest, directory structure, command line you are using and current working directory.

But generally you should write in your manifest: Class-Path: hector-0.6.0-17.jar

then put all jars in one directory. Let's call it foo. Now open command prompt, go to foo and run

java -jar niidle.jar args...

And I believe that everything will work. Then if you wish play with location of your jars.


For setting up "jars within jars" take a look at this question:

Classpath including JAR within a JAR

0

精彩评论

暂无评论...
验证码 换一张
取 消