Клиентское приложение Eclipse Rich Connect для подключения к базе данных - PullRequest
0 голосов
/ 29 января 2019

Я запускаю новое приложение Eclipse RCP, и это мой первый раз, и у меня есть проблема, я хочу отобразить список моей доступной базы данных (кстати, я использую базу данных nosql (MongoDB)), но мой код кажетсяне работать, кто-нибудь может помочь, пожалуйста, кто-нибудь может подсказать мне хороший учебник, спасибо за ваше время и помощь, ребята.

package test2.parts;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Inject;

import org.eclipse.e4.ui.di.Focus;
import org.eclipse.e4.ui.di.Persist;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCursor;
import org.eclipse.swt.widgets.Label;

public class SamplePart  {


    org.eclipse.swt.widgets.List list ;
    private TableViewer tableViewer;

    @Inject
    private MPart part;

    @PostConstruct
    public void createComposite(Composite parent) {
        parent.setLayout(new GridLayout(1, false));

        Text txtInput = new Text(parent, SWT.BORDER);
        txtInput.setMessage("Enter text to mark part as dirty");
        txtInput.addModifyListener(e -> part.setDirty(true));
        txtInput.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        list = new org.eclipse.swt.widgets.List(parent, SWT.BORDER);



        tableViewer = new TableViewer(parent);
        tableViewer.setContentProvider(ArrayContentProvider.getInstance());
        tableViewer.setInput(createInitialDataModel());
        tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));


    }

    @Focus
    public void setFocus() {
        tableViewer.getTable().setFocus();
    }

    @Persist
    public void save() {
        part.setDirty(false);
    }


    private List<String> createInitialDataModel() {

        MongoClient mongoClient = new MongoClient("localhost", 27017);
        ArrayList<String> dbs = new ArrayList<String>();
        MongoCursor<String> dbsCursor = mongoClient.listDatabaseNames().iterator();
        while (dbsCursor.hasNext()) {
            list.add(dbsCursor.next());
        }
        return (List<String>) list;

    }
}

enter image description here

enter image description here

1 Ответ

0 голосов
/ 29 января 2019

Трассировка стека показывает, что подключаемый модуль не может найти класс MongoClient.

Подключаемые модули Eclipse могут обращаться только к коду в других подключаемых модулях или в jar-файлах, включенных в подключаемый модуль.Они не могут использовать jar-файлы, которые находятся только в обычном Java-пути к классам.

Так что вам нужно будет добавить jar, содержащий класс MongoClient, в ваш плагин и добавить его в Bundle-Classpath в MANIFEST.MF,Это можно сделать в редакторе MANIFEST.MF в разделе «Classpath» на вкладке «Runtime».

Вам также необходимо включить jar в файл build.properties.

...