2013-08-24 4 views
0

저는 Apertium Translator를 사용하고 그들이 제공하는 샘플 코드를 사용하고 있습니다. 내 코드는 이것과 같습니다.java.lang.NoClassDefFoundError 번역 할 때

import com.robtheis.aptr.language.Language; 
import com.robtheis.aptr.translate.Translate; 

public class Test { 

public static void main(String[] args) throws Exception { 
    // Set the Apertium API Key - Get yours at http://api.apertium.org/register.jsp 
    Translate.setKey("BNSCFhEL8DoTApc2I1+aa3UYkVg"); 

    String translatedText = Translate.execute("Hola, mundo!", Language.SPANISH, Language.ENGLISH); 

    System.out.println(translatedText); 
} 
} 

오류나 경고가 없으며 프로그램을 실행할 때 다음 오류가 발생합니다.

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/JSONValue 
at com.robtheis.aptr.ApertiumTranslatorAPI.jsonSubObjToString(ApertiumTranslatorAPI.java:195) 
at com.robtheis.aptr.ApertiumTranslatorAPI.retrieveSubObjString(ApertiumTranslatorAPI.java:140) 
at com.robtheis.aptr.translate.Translate.execute(Translate.java:56) 
at maple.Test.main(Test.java:11) 
Caused by: java.lang.ClassNotFoundException: org.json.simple.JSONValue 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
... 4 more 

내가 사용하고있어 .JAR 당신은 첫 번째를 다운로드해야 https://github.com/rmtheis/apertium-translator-java-api/downloads

답변

2

에서 두 번째입니다. 첫 번째 jar 파일은 (apertium - 번역기 - 자바 API를-0.2-항아리 -와 - dependencies.jar는)

.. 필요한 모든 종속성을 포함 또는 당신은 .. 당신의 프로젝트 경로에

을 JSON 라이브러리를 추가
+0

첫 번째 다운로드를 사용하면 같은 오류가 발생합니다. json 라이브러리를 프로젝트 경로에 어떻게 추가합니까? – user2612619

+0

좋아 ..이 json lib를 https://code.google.com/p/json-simple/downloads/detail?name=json-simple-1.1.1.jar&can=2&q=에서 다운로드하고 빌드 경로에 추가하십시오. 그것은 작동해야합니다. apertium translotar는이 라이브러리를 사용하지만 종속성으로 추가되지 않습니다. 그 이유는 NoClassDefFoundError를 얻는 이유입니다. – zennon

+0

내가 그렇게하면 가져 오기와 Translate.xxx에서 오류가 발생합니다. – user2612619

0

음 JVM은 컴파일 타임에 사용 가능한 Runtime에서 일부 클래스를 찾을 수 없습니다. 당신은 또한 당신이 이름으로 런타임에 특정 클래스를로드하려고하는 의미,이 클래스 org.json.simple.JSONValue 에 대한 ClassNotFoundException가이 아래 즉 NoClassDefFoundError를
의 이유입니다.
둘 다 Java 클래스 경로과 관련 있습니다. jSON에 대해 많은 것을 알지 못합니다. 하지만이 파일 org.json.simple.JSONValue가 누락되었습니다. 여기에서 가져올 수 있습니다 http://code.google.com/p/json-simple/
클래스 경로에 위의 jar 파일을 추가하십시오. 그리고 코드는 확실히 실행됩니다. 보증. !!!
감사합니다.