Remote Application Platform - Fragen über Fragen und keiner weiß nichts genaues

zitrone18

Mitglied
Hallo zusammen,

ich muss mich gerade mit der Remote Application Platform (RAP) beschäftigen.
Hab mir schon eine GUI gebastelt und auch schon den ein oder anderen EventHandler eingebaut, bis dahin ist alles gut.

Jetzt möchte ich gerne eine Datenbankanbindung in meinem RAP-Projekt implementieren. Beim Versuch den Spaß zu "compilieren" gibt es diese Fehlermeldung

Java:
java.lang.ClassNotFoundException: org.sqlite.JDBC
	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)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at helloworld.BasicEntryPoint.createContents(BasicEntryPoint.java:33)
	at org.eclipse.rap.rwt.application.AbstractEntryPoint.createUI(AbstractEntryPoint.java:53)
	at org.eclipse.rap.rwt.internal.lifecycle.PrepareUIRoot.execute(PrepareUIRoot.java:40)
	at org.eclipse.rap.rwt.internal.lifecycle.PhaseExecutor.execute(PhaseExecutor.java:40)
	at org.eclipse.rap.rwt.internal.lifecycle.SimpleLifeCycle.execute(SimpleLifeCycle.java:48)
	at org.eclipse.rap.rwt.internal.service.RWTMessageHandler.executeLifeCycle(RWTMessageHandler.java:57)
	at org.eclipse.rap.rwt.internal.service.RWTMessageHandler.handleMessage(RWTMessageHandler.java:41)
	at org.eclipse.rap.rwt.internal.remote.MessageChainElement.handleMessage(MessageChainElement.java:28)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.processMessage(LifeCycleServiceHandler.java:175)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.processUIRequest(LifeCycleServiceHandler.java:147)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.handleUIRequest(LifeCycleServiceHandler.java:105)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.synchronizedService(LifeCycleServiceHandler.java:83)
	at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.service(LifeCycleServiceHandler.java:75)
	at org.eclipse.rap.rwt.engine.RWTServlet.handleValidRequest(RWTServlet.java:126)
	at org.eclipse.rap.rwt.engine.RWTServlet.handleRequest(RWTServlet.java:110)
	at org.eclipse.rap.rwt.engine.RWTServlet.doPost(RWTServlet.java:100)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
	at org.eclipse.jetty.server.Server.handle(Server.java:370)
	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
	at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
	at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)
	at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
	at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
	at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
	at java.lang.Thread.run(Unknown Source)

Der Code ist folgender:

Java:
package helloworld;

import java.sql.*;

import org.eclipse.rap.rwt.application.AbstractEntryPoint;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;

public class BasicEntryPoint extends AbstractEntryPoint {

	//SWT
	GridData data = null;
	GridLayout layout = null;
	
    @Override
    protected void createContents(Composite parent) {
    	
    	parent.setLayout(new FillLayout());
        Ressourcen res = new Ressourcen(parent, SWT.NONE);        
        res.setVisible(true);
        
        try {
			DriverManager.registerDriver((Driver) Class.forName("org.sqlite.JDBC").newInstance());
			String url = "jdbc:sqlite:test.db";
			Connection c = DriverManager.getConnection(url);
					
		} catch (InstantiationException | IllegalAccessException
				| ClassNotFoundException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
}

Da ich noch nicht so richtig in das Konzept von RAP einsteigen konnte (keine guten Übersichten oder Einführungen in die Platform), ist meine Frage ob Ihr welche kennt.

Vielleicht tummeln sich hier sogar Leute, die eine Idee haben, wo das Problem ist.

Gruß,
Zitrone
 
Zuletzt bearbeitet:

dzim

Top Contributor
Also es stimmt, das die Doku zu RAP bestenfalls dünn ist - wie bei vielen aus der Eclipse-Welt, was ich extrem schade finde, denn RAP hat IMHO durchaus potential. Aber lassen wir das Beiseite.

Dein Problem sieht schon von der Fehlermeldung her nicht so aus als ob es etwas mit RAP zu tun hätte.
Was für einen JDBC-Treiber für SQLite verwendest du? Ich musste bei dem von Xerial keine vorgelagerte Treiberregistrierung machen, nur die Verbindung aufbauen...
Ich vermute einfach, das dein JAR-File mit dem Treiber nicht richtig beim Build gebundelt wurde und dir somit der angeforderte JDBC-Treiber schlicht und einfach fehlt. Schau noch mal, das dort alles richtig konfiguriert wurde.
 

zitrone18

Mitglied
Erstmal danke für deine Antwort,

Ich vermute einfach, das dein JAR-File mit dem Treiber nicht richtig beim Build gebundelt wurde und dir somit der angeforderte JDBC-Treiber schlicht und einfach fehlt. Schau noch mal, das dort alles richtig konfiguriert wurde.

Davon, dass man jar-Files in das Projekt einbinden muss, hab ich schon gelesen. Wie man das macht, ist mir allerdings weiterhin ein Rätsel...
 

dzim

Top Contributor
Frage: Eclipse-Projekt, hoffe ich doch? (Ich würde dir bei solchen Applikationen von einer rein im Editor geschriebenen Anwendung abraten und eine IDE verwenden - da RAP aus der Eclipse-Welt kommt, würde ich hier auch Eclipse wählen).



Unter der Annahme, dass du nun Eclipse verwendest:

1) Erstelle, wenn noch nicht zuvor gemacht, den Ordner "libs" in deinem Projekt
2) Kopiere den Datenbanktreiber deiner DB (hier also den SQLite-Trieber)
3) Ist es ein OSGi-Bundle oder ein einfaches Java-Projekt?
3.1) OSGi: Öffne dein Manifest (META_INF/MANIFEST.MF) -> in dem speziellen Editor kannst du im Tab "Runtime" (Achtung, die Tabs sind unten) auf der rechten unteren Seite etwas zum Classpath hinzufügen ("Add..."). Wähle nun das Jar-File aus. Fertig. (Es kann sein, dass du später noch einmal im Tab "Build" den Ordner links unten - "Binary Build" - hinzufügen müsstest.)
3.2) Java-Projekt: Projekt-Einstellungen öffnen (Projekt anklicken und Alt+Enter oder Kontextmenü ganz unten "Properties"). "Java Build Path" wählen. Dann den Tab "Libraries". "Add JARs...", dein Projekt anwählen und aufklappen, und die JAR aus dem "libs"-Verzeichnis wählen. Fertig.



Wenn du immer noch den Editor verwendest, musst du die Jar zum Classpath hinzufügen. Dazu gibt es auf der Kommandozeile den Parameter "-cp" (":" als Trenner)
 

zitrone18

Mitglied
Hallo dzim,

danke für die kurze Anleitung. Ich habe es nun mit Schritt 3.2 gemacht (also als Java-Projekt).
Ich danke dir sehr. Es läuft nun. Schade, dass es keine sauberen Tutorials oder Dokumentationen für sowas gibt.

Gruß,
zitrone
 
Zuletzt bearbeitet:

dzim

Top Contributor
Gibt es schon:
Eclipse IDE Tutorials

Das Problem ist eher, das du hier nicht die Doku/Tutorial-Vielfalt (bzw. deren Fehlen) von RAP mit der von "Wie benutze ich Eclipse richtig" vergleichen kannst. Zu Eclipse findest du unendlich viel (wenn du nach den richtigen Stichworten suchst, natürlich). Bei RAP sieht es etwas anders aus - zum Glück nutzt es für die Basics Das Grundgerüst von SWT, so dass man sich einen soliden Stand erarbeiten kann. Erst die Feinheiten und das Deployment sind by RAP am Ende komplizierter.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D IPerspectiveFactory in einer e4 application Plattformprogrammierung 2
R RCP Application Model - Änderungen erfolgen nicht Plattformprogrammierung 17
L RCP Exception beim Ausführen von BIRT Application Plattformprogrammierung 2
T Application+Swing Plattformprogrammierung 2
L RAP Application export? Plattformprogrammierung 4
N Application & Product Infocenter und eigene TOC Plattformprogrammierung 7
M Eclipe RCP-Application oder Plugin Einstieg Plattformprogrammierung 6
dzim Kontrolliertes Beenden einer Application Plattformprogrammierung 7
K RCP Application, mit der Zeit JavaOutOfMemoryException Plattformprogrammierung 7
dzim eigene Application und PlugIns Plattformprogrammierung 16
D OSGi JSR296 (Swing Application Framework) - Konzeptionsfrage Plattformprogrammierung 2
C Bibliothek in Netbeans einbinden mit Graphi als Platform Plattformprogrammierung 1
Kr0e Allgemeine NetBeans Platform Module Frage Plattformprogrammierung 13
C target platform problem Plattformprogrammierung 2
Geeeee (Semi-)Automatisch Target Platform erstellen Plattformprogrammierung 16
hdi Frage zu Target Platform Plattformprogrammierung 15
M Fehler bei Plugin Export für eigene Target Platform Plattformprogrammierung 3
Wildcard Cross-Platform RCP bauen - Tutorial Plattformprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben