无法从命令行运行Scala-Neo4j项目

时间:2013-05-21 19:08:07

标签: java scala neo4j noclassdeffounderror scala-ide

我开发了一个Java项目,其中我编写了一些Scala类和一些Java类。我在项目中使用Scala-Neo4j wrapper编写Scala函数来插入和检索Neo4j节点。我还在项目中用java编写了Thrift服务,因为我需要从Php中调用这些Scala函数。最后我使用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文件时,我得到了上面的Exception。我哪里出错?

1 个答案:

答案 0 :(得分:1)

似乎您没有正确设置类路径。试试这个:

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

当然,将./where/is/Neo4jWrapper/jar替换为.jar的路径。请注意,如果您需要指向多个jar或类目录,则需要使用:(如果在Linux / Mac上)或;(如果在Windows中)将它们分开。并避免类路径中的空格。