【问题标题】:Memcached dependency jar not working with maven project and throwing java.lang.ClassNotFound: net.spy.memcached.MemcachedClient ExceptionMemcached 依赖 jar 不适用于 maven 项目并抛出 java.lang.ClassNotFound: net.spy.memcached.MemcachedClient 异常
【发布时间】:2013-04-16 18:27:46
【问题描述】:

我的项目是在 linux 环境中。我想在我的项目中添加 memcached jar 依赖 jar。因此,我在 pom.xml 中添加了以下行,如 here 所述。

  <repositories>
    <repository>
      <id>spy</id>
      <name>Spy Repository</name>
      <layout>default</layout>
      <url>http://files.couchbase.com/maven2/</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
 <dependencies>
   <dependency>
        <groupId>spy</groupId>
        <artifactId>spymemcached</artifactId>
        <version>2.8.1</version>
        <scope>compile</scope>
    </dependency>
 </dependencies>

程序已成功构建。但是每当我运行项目 jar 时,它都会引发以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: net/spy/memcached/MemcachedClient
        at MemClient.<clinit>(MemClient.java:12)
        at MemClientUser.main(MemClientUser.java:18)
Caused by: java.lang.ClassNotFoundException: net.spy.memcached.MemcachedClient
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        ... 2 more

我尝试了以下链接中给出的一些解决方案:
Java ClassNotFoundException with maven dependency,但它没有修复异常。
如何解决此异常?

【问题讨论】:

  • 检查 maven 是否真的得到了 jar。
  • 你需要依赖于类路径,显然不是这样。你是如何启动 jar 文件的?
  • @khmarbaise : 使用命令 -> java -jar
  • 是我所期望的。你需要依赖 spymemcached 到你的类路径才能让它运行。

标签: java maven classnotfoundexception spymemcached


【解决方案1】:

仅仅运行 jar 是不够的,因为 Maven 不会将模块的依赖项“合并”到它正在构建的 jar 中。要么运行 jar

java -jar yourJar.jar -cp pathToTheSpymemcached.jar

在哪里适当地替换 yourJar.jarpathToTheSpymemcached.jar,或者你可以看看这个:How can I create an executable JAR with dependencies using Maven?

【讨论】:

    猜你喜欢
    • 2017-05-13
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2014-02-26
    • 2018-09-11
    相关资源
    最近更新 更多