2013-05-21 3 views
0

저는 스칼라 클래스와 일부 Java 클래스를 작성한 Java 프로젝트를 개발했습니다. 프로젝트에 Scala-Neo4j wrapper을 사용하여 Neo4j 노드를 삽입하고 검색하는 스칼라 함수를 작성했습니다. 필자는 PHP에서 스칼라 함수를 호출해야하므로 프로젝트에서 java에서 Thrift 서비스를 작성했습니다. 마지막으로 나는 이클립스를 사용하여 jar 파일을 추출 나는 명령 줄에서 실행하려고하고 나는 이클립스에서 프로젝트를 실행할 때 그것은 완전히 잘 작동 다음과 같은 예외명령 줄에서 Scala-Neo4j 프로젝트를 실행할 수 없습니다.

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 

을 얻었다. 그러나 프로젝트에서 추출한 jar 파일을 실행하는 동안 위의 예외가 발생합니다. 나는 어디로 잘못 갔는가?

답변

1

클래스 경로를 제대로 설정하지 않는 것 같습니다. 이것을 시도하십시오 :

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

물론, ./where/is/Neo4jWrapper/jar을 .jar의 경로로 바꾸십시오. 둘 이상의 항아리 또는 클래스 디렉토리를 가리 키도록해야한다면 Linux/Mac의 경우 : 또는 Windows의 경우 ;으로 구분해야합니다. 그리고 classpath에있는 공간을 피하십시오.

+0

lib라는 폴더에 모든 병을 보관하고 프로젝트에 추가했습니다. – yAsH

관련 문제