0

私のプロジェクトは Linux 環境にあります。プロジェクトに memcached jar 依存関係 jar を追加したいと考えています。そのため、こちらで説明されているように、pom.xml に次の行を追加しました。

  <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

次のリンクに示されているように、いくつかの解決策を試しました:
Maven依存関係を持つJava ClassNotFoundExceptionですが、例外は修正されませんでした。
この例外はどのように解決できますか?

4

1 に答える 1

1

Maven はビルド中の jar にモジュールの依存関係を「組み込む」ことはないため、jar を実行するだけでは不十分です。jarを実行するか

java -jar yourJar.jar -cp pathToTheSpymemcached.jar

どこを適切に置き換えるyourJar.jarpathToTheSpymemcached.jar、これを見ているかもしれません: Mavenを使用して依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?

于 2013-04-16T19:05:19.977 に答える