我在以下文件夹usr/local/bin/niidle.jar中创建了jar,而我的MANIFEST.MF文件如下:

  清单版本:1.0
  主类:com.ensarm.niidle.web.scraper.NiidleScrapeManager
  类路径:hector-0.6.0-17.jar


我确认文件夹中也存在文件hector-0.6.0-17.jar


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


我不想在MANIFEST.MF文件中提供完整的类路径名称,因为我必须在另一台计算机上运行此jar。所以我在MANIFEST.MF文件中只给出了jar文件名Class-Path=hector-0.6.0-17.jar

尽管提到了MANIFEST.MF文件中的类路径,但是当我使用命令运行此命令时:


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


它显示错误消息:

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


请为我提供此错误消息的解决方案。

最佳答案

类路径相对于jar文件所在目录是相对的还是绝对的。
因此对于您的情况,您必须将hector-0.6.0-17.jar更改为/ usr / local / bin

10-07 18:57
查看更多