繁体   English   中英

罐中MANIFEST.MF的问题

[英]problem with MANIFEST.MF in jar

我在以下文件夹中创建了我的jar文件:

 /usr/local/bin/niidle.jar 

我有一个jarfile在以下文件夹中

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

而这个文件“ hector-0.6.0-17.jar”我必须包含在jar的MANIFEST.MF中。

当我在MANIFEST.MF中提到类路径时,如下所示:

Manifest-Version: 1.0
Main-Class: com.ensarm.niidle.web.scraper.NiidleScrapeManager
Class-Path: /Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar 

当我使用命令运行此命令时:

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

它正常工作..

但是我不想给出完整的Class-Path名称,我必须给出Class-Path如下:

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

当我使用命令运行此命令时:

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

它显示错误消息:

  线程“主”中的异常java.lang.NoClassDefFoundError:me / prettyprint / hector / api / Serializer\n     在com.ensarm.niidle.web.scraper.NiidleScrapeManager.main(NiidleScrapeManager.java:21)\n 引起原因:java.lang.ClassNotFoundException:me.prettyprint.hector.api.Serializer\n    在java.net.URLClassLoader $ 1.run(URLClassLoader.java:200)\n    在java.security.AccessController.doPrivileged(本机方法)\n    在java.net.URLClassLoader.findClass(URLClassLoader.java:188)\n    在java.lang.ClassLoader.loadClass(ClassLoader.java:307)\n    在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)\n    在java.lang.ClassLoader.loadClass(ClassLoader.java:252)\n    在java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)\n    ...还有1个 

请告诉我解决方案...

我看到至少两个解决方案:

  1. 将hector-0.6.0-17.jar存储在niidle.jar中,并在Class-Path中使用相对路径。 例如, Class-Path: lib/hector-0.6.0-17.jar (用于niidle.jar / lib / hector-0.6.0-17.jar)
  2. java -cp /Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar -jar /usr/local/bin/niidle.jar

在运行命令的文件创建一个lib文件 ,将hector-0.6.0-17.jar放入其中,然后尝试再次运行该命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM