복붙노트

[MONGODB] java.lang.NoClassDefFoundError가는 MongoDB의 드라이버를 사용하는 경우

MONGODB

java.lang.NoClassDefFoundError가는 MongoDB의 드라이버를 사용하는 경우

나는 MongoDB를 데이터베이스가 서블릿에서 Java 드라이버를 사용 MLAB에서 호스트에 연결을 시도하고있다.

import org.bson.Document; 
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoConnection {

    protected void connectToMongo(String loc){

        String dbName = "readings";
        String collection = "data";

        MongoClientURI uri = new MongoClientURI("mongodb://user:pass@ds143109.mlab.com:43109/readings");
        MongoClient client = new MongoClient(uri);
        MongoDatabase db = client.getDatabase(dbName);

        MongoCollection<Document> readings = db.getCollection(collection);

        Document doc = Document.parse(loc);

        readings.insertOne(doc);

        client.close();
    }
}

문제는 내가 다음과 같은 오류를 얻고있다 : java.lang.NoClassDefFoundError가 : COM / MongoDB를 / MongoClientURI

나는 다른 항아리를 필요로 나에게 강조, 내가 있기 때문에 그러나 나는 아직도이 오류를 얻고을 다운로드 한 : 나는 (? com.mongodb.connection.BufferProvider 해결에 ClassNotFoundException하는 방법) 한 대답 바라 보았다.

그때 빌드 경로 다음 Eclipse를 사용하고 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 메뉴를 탐색, 빌드 경로에 세 개의 항아리를 추가하고 -> 구성 빌드 경로 -> 자바 빌드 경로 -> 라이브러리 -> 외부 JAR 파일을 추가합니다.

이 할 수있는 올바른 방법인가? 내가 대신 /뿐만 아니라 어떻게해야하고 다른 뭔가가 있나요?

해결법

  1. ==============================

    1.수단 클래스가 (하지 빌드 / 컴파일 시간 동안) 런타임 중에 놓친 것을 - 당신은 java.lang.NoClassDefFoundError가 있습니다. 프로젝트에 대한 "실행 구성"대화 상자가 열립니다 그래서 (프로젝트 컨텍스트 메뉴 -> "실행으로"-> "실행 구성 ...") 그리고 당신이 bson-xxx.jar, MongoDB의 드라이버-XXX가합니다. 항아리와 MongoDB를 드라이버 코어-xxx.jar은 어떻게 든 클래스 경로 탭에 나열. 자비에르 Bouclet 말한 것처럼 그리고 네, - 당신은 응용 프로그램 서버에서 실행하는 경우 -이 항아리는 서버의 클래스 경로에 추가해야합니다.

    수단 클래스가 (하지 빌드 / 컴파일 시간 동안) 런타임 중에 놓친 것을 - 당신은 java.lang.NoClassDefFoundError가 있습니다. 프로젝트에 대한 "실행 구성"대화 상자가 열립니다 그래서 (프로젝트 컨텍스트 메뉴 -> "실행으로"-> "실행 구성 ...") 그리고 당신이 bson-xxx.jar, MongoDB의 드라이버-XXX가합니다. 항아리와 MongoDB를 드라이버 코어-xxx.jar은 어떻게 든 클래스 경로 탭에 나열. 자비에르 Bouclet 말한 것처럼 그리고 네, - 당신은 응용 프로그램 서버에서 실행하는 경우 -이 항아리는 서버의 클래스 경로에 추가해야합니다.

  2. ==============================

    2.당신은 데이터베이스에 전화가 서블릿에서 만들어진 경우 MongoDB를 단지 서버에 수출되고 있는지 확인해야합니다.

    당신은 데이터베이스에 전화가 서블릿에서 만들어진 경우 MongoDB를 단지 서버에 수출되고 있는지 확인해야합니다.

    로컬 서버, 적합에 응용 프로그램을 배포하는 방법을 확인 확실히 항아리가합니다.

  3. from https://stackoverflow.com/questions/42122018/java-lang-noclassdeffounderror-when-using-mongodb-driver by cc-by-sa and MIT license