0

私は、いくつかの Scala クラスといくつかの Java クラスを作成する Java プロジェクトを開発しました。プロジェクトでScala-Neo4j ラッパーを使用して、Neo4j ノードの挿入と取得のための Scala 関数を記述しました。Php からこれらの Scala 関数を呼び出す必要があるため、プロジェクトの Java で Thrift サービスも作成しました。最後に、Eclipse を使用して jar ファイルを抽出し、コマンド ラインから実行しようとしたところ、次の例外が発生しました。

Exception in thread "main" java.lang.NoClassDefFoundError: org/neo4j/scala/Neo4jWrapper
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    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)
    at dum.Sad.main(Sad.scala)
    at dum.ScalaRunner.main(ScalaRunner.java:7)
Caused by: java.lang.ClassNotFoundException: org.neo4j.scala.Neo4jWrapper
    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)
    ... 14 more

Eclipse からプロジェクトを実行すると、完全に正常に動作します。しかし、プロジェクトから抽出したjarファイルを実行しているときに、上記の例外が発生します。どこで私は間違えましたか?

4

1 に答える 1

1

クラスパスを適切に設定していないようです。これを試して:

scala -cp ./where/is/Neo4jWrapper/jar YourClass

もちろん、./where/is/Neo4jWrapper/jar.jar へのパスに置き換えます。複数の jar またはクラス ディレクトリを指す必要がある場合は、それらを:Linux/Mac の場合または;Windows の場合で区切る必要があることに注意してください。また、クラスパスにはスペースを避けてください。

于 2013-05-21T19:12:51.400 に答える