Keine Verbindung mit MariaDB

RezaScript

Bekanntes Mitglied
Hallo,

ich bin ziemlich neu in der Java-Welt und würde gerne eine Web-Applikation mit MariaDB aufbauen. Mit Intellij und Tomcat bringe ich die Applikation zum Laufen, erhalte aber die Meldung: java.lang.ClassNotFoundException: org.mariadb.jdbc.Driver

Mein pom.xml beinhaltet:
XML:
<dependencies>
    <dependency>
        <groupId>org.mariadb.jdbc</groupId>
        <artifactId>mariadb-java-client</artifactId>
        <version>1.1.7</version>
    </dependency>
</dependencies>

Mein Code sieht wie folgt aus:
Java:
package ch.yourclick.zt;

import java.sql.*;

public class Database {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("org.mariadb.jdbc.Driver");

        String host = "localhost";
        String dbname = "zt_productions";
        String url = "jdbc:mariadb://" + host + "/" + dbname;
        String username = "root";
        String password = "test";
        Connection conn = DriverManager.getConnection(url, username, password);

        String query = "SELECT * FROM users";

        Statement st = conn.createStatement();

        st.close();
    }
}

Ich habe alles mögliche schon ausprobiert wie mariadb-java-client-2.4.1-sources.jar manuell in WEB-INF/lib platziert oder mit Class.forName("org.mariadb.jdbc.Driver").newInstance(); aber scheint nichts zu funktionieren. Ich erhalte immer dieselbe Fehlermeldung und fange so langsam an zu verzweifeln. Kann mir jemand bitte weiterhelfen?
 
K

kneitzel

Gast
Also die sources jar da rein zu packen wird dir nichts bringen. Wenn, dann willst Du ja die kompilierten Files haben. Also nimm eher das mariadb-java-client-2.4.1.jar.

Oder mach es über Maven mit der aktuellen Version. Wieso hast Du da die 1.1.7 angegeben wo Du doch im Download selbst gesehen hast, dass die 2.4.1 aktuell ist?
Siehe dazu auch einfach https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client

Aber etwas wundert mich das dennoch, denn auch bei der 1.1er Version gab es die Klasse org.mariadb.jdbc.Driver. Daher wundert es mich, wieso er da die 1.1.6er Version, die Du da als Dependency drin hast, nicht mitgenommen hat....
 

RezaScript

Bekanntes Mitglied
Also die sources jar da rein zu packen wird dir nichts bringen. Wenn, dann willst Du ja die kompilierten Files haben. Also nimm eher das mariadb-java-client-2.4.1.jar.

Oder mach es über Maven mit der aktuellen Version. Wieso hast Du da die 1.1.7 angegeben wo Du doch im Download selbst gesehen hast, dass die 2.4.1 aktuell ist?
Siehe dazu auch einfach https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client

Aber etwas wundert mich das dennoch, denn auch bei der 1.1er Version gab es die Klasse org.mariadb.jdbc.Driver. Daher wundert es mich, wieso er da die 1.1.6er Version, die Du da als Dependency drin hast, nicht mitgenommen hat....

Oh super, vielen Dank kneitzel! Das hat mich schon einen sehr grossen Schritt weitergebracht. Mit mariadb-java-client-2.4.1.jar in WEB-INF/lib scheint es zu funktionieren.

Was Maven angeht, scheint es, dass ich irgendetwas falsch mache. Ich habe nun auch die neueste Version 2.4.1 genommen und auch damit funktioniert es nicht. Falls es dich interessiert, hier findest du das ganze Projekt: https://bitbucket.org/rezasript/zt-productions
 

mrBrown

Super-Moderator
Mitarbeiter
Was Maven angeht, scheint es, dass ich irgendetwas falsch mache. Ich habe nun auch die neueste Version 2.4.1 genommen und auch damit funktioniert es nicht. Falls es dich interessiert, hier findest du das ganze Projekt: https://bitbucket.org/rezasript/zt-productions
Wenn du ein Web-Project willst, solltest du Maven das auch mitteilen ;)

Gib in der pom.xml zusätzlich das Packaging an, in diesem Fall war: <packaging>war</packaging>.
Der Ordner web sollte dann noch in "webapp" umbenannt in src landen und die jar sollte da raus, dann ist das über Maven baubar.
 

RezaScript

Bekanntes Mitglied
Wenn du ein Web-Project willst, solltest du Maven das auch mitteilen ;)

Gib in der pom.xml zusätzlich das Packaging an, in diesem Fall war: <packaging>war</packaging>.
Der Ordner web sollte dann noch in "webapp" umbenannt in src landen und die jar sollte da raus, dann ist das über Maven baubar.

Hmm, habe ich alles gemacht aber dann komme ich auf eine 404-Seite :/

Type Status Report
Message /ZT_war_exploded/
Bescrheibung The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
 

mrBrown

Super-Moderator
Mitarbeiter
guck dir mal die war an, ob darin alles am passenden Ort ist.

Wie hast du die generierte war deployed?
 

RezaScript

Bekanntes Mitglied
ALso unter .idea\artifacts habe ich ein ZT_war.xml und ein ZT_war_exploded.xml.

ZT_war.xml
XML:
<component name="ArtifactManager">
  <artifact type="war" name="ZT:war">
    <output-path>$PROJECT_DIR$/target</output-path>
    <properties id="maven-jee-properties">
      <options>
        <module>ZT</module>
        <packaging>war</packaging>
      </options>
    </properties>
    <root id="archive" name="zt-1.0-SNAPSHOT.war">
      <element id="artifact" artifact-name="ZT:war exploded" />
    </root>
  </artifact>
</component>

ZT_war_exploded.xml
XML:
<component name="ArtifactManager">
  <artifact type="exploded-war" name="ZT:war exploded">
    <output-path>$PROJECT_DIR$/target/zt-1.0-SNAPSHOT</output-path>
    <properties id="maven-jee-properties">
      <options>
        <exploded>true</exploded>
        <module>ZT</module>
        <packaging>war</packaging>
      </options>
    </properties>
    <root id="root">
      <element id="directory" name="WEB-INF">
        <element id="directory" name="classes">
          <element id="module-output" name="ZT" />
        </element>
        <element id="directory" name="lib">
          <element id="library" level="project" name="Maven: org.mariadb.jdbc:mariadb-java-client:2.4.1" />
        </element>
      </element>
      <element id="directory" name="META-INF">
        <element id="file-copy" path="$PROJECT_DIR$/target/zt-1.0-SNAPSHOT/META-INF/MANIFEST.MF" />
      </element>
      <element id="javaee-facet-resources" facet="ZT/web/Web" />
    </root>
  </artifact>
</component>

Unter der Konfiguration von Tomcat habe ich als "Deploy at server startup" ZT:war_exploded eingegeben.
 

mrBrown

Super-Moderator
Mitarbeiter
In Target liegt, wenn du mit Maven baust, eine zt.war. Diese Datei kannst im im Tomcat deployen.

Alles was in .idea liegt, solltest du ignorieren.
 

mihe7

Top Contributor
Dir ist aber schon klar, dass die main-Methode nicht von Tomcat ausgeführt wird, bloß weil Du die Seite aufrufst?
 

RezaScript

Bekanntes Mitglied
Okay ich habe das ganze Projekt jetzt nochmals neu erstellt und nun bekomme ich keine 404-Meldung mehr aber der Wert der Variabel wird mir nicht mehr ausgegeben. Der Browser gibt mir jetzt einfach ${username} aus.

Ich habe es auch damit probiert:
Code:
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>

Scheint nichts zu funktionieren.

Was mache ich da falsch? :/
 

mihe7

Top Contributor
Es wundert mich schon, dass das Ding bei Dir überhaupt übersetzt wird. In Deiner pom.xml fehlt die Abhängigkeit von der servlet-api. Um z. B. Version 4.0.1. zu verwenden:
XML:
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>

Als nächstes erklärt Deine web.xml, dass die Servlet 2.x Spezifikation verwendet wird. Die kennt keine Annotationen, deshalb wird z. B. Dein Login-Servlet nicht registriert. Schmeiß den DOCTYPE raus und verwende:
XML:
<web-app version="4.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
  <display-name>Archetype Created Web Application</display-name>
</web-app>
Das ist die vollständige web.xml.

Danach sollte es funktionieren.
 

RezaScript

Bekanntes Mitglied
Danke mihe7, das funktionier so bei mir bestens!

Einfach nur damit ich etwas daraus gelernt habe:
Ich verstehe generell nicht den Zusammenhang zwischen pom.xml und web.xml. pom.xml ist von Maven und damit kann ich die Abhängigkeiten definieren. So weit habe ich es verstanden aber weshalb muss ich in pom.xml Servlet definieren aber auch die Spezifikation des Servlets in web.xml??

Und wie genau kommst du zu diesem Code für web.xml? Ich habe etwas mühe damit mir den Code zu merken und ich möchte ihn auch nicht auswendig lernen. Wo genau wird also die Servlet-Spezifikation definiert und braucht es die URLs unbedingt?

Sorry für die dummen Fragen :)
 

mihe7

Top Contributor
Die Fragen sind alles andere als dumm.

Die pom.xml und die web.xml sind zwei völlig verschiedene Dinge. Die pom.xml kümmert sich in erster Linie um das Bauen der Anwendung (via Maven). Ergebnis ist in diesem Fall ein WAR-File. Die web.xml ist dagegen ein Deployment Descriptor, eine Art Konfigurationsdatei, mit der dem Servlet Container (Tomcat) bzw. Application Server bestimmte Sachverhalte bzgl. Deiner Anwendung bekannt gegeben werden.

In der pom.xml gibst Du die Version der Servlet API an, gegen die Du kompilierst. Vielleicht ist Dir die Zeile <scope>provided</scope> aufgefallen. Die Zeile bedeutet, dass gegen die Bibliothek zwar kompiliert, sie aber nicht in das WAR aufgenommen wird, weil sie bereits auf dem Zielsystem vorhanden ist. Das macht bei einem Servlet Container Sinn, denn der implementiert ja gerade diese API.

Da diese Bibliothek nicht mit ausgeliefert wird, kann der Servlet Container auch nicht ermitteln, welche Servlet-Version die Anwendung verwendet. Diese Angabe findet er im Deployment Descriptor (web.xml). Warum gibt es das überhaupt? Ganz einfach: Du kannst eine alte WAR in einem aktuellen Servlet Container laufen lassen.

Und wie genau kommst du zu diesem Code für web.xml? Ich habe etwas mühe damit mir den Code zu merken und ich möchte ihn auch nicht auswendig lernen. Wo genau wird also die Servlet-Spezifikation definiert und braucht es die URLs unbedingt?
Sowas merkt man sich auch nicht. Wenn Du Spaß haben willst: https://javaee.github.io/servlet-spec/downloads/servlet-4.0/servlet-4_0_FINAL.pdf, wenn Du arbeiten willst, dann übernimmt das normalerweise die IDE (bzw. Maven beim Erzeugen eines neuen Projekts) oder man googelt das kurz.

Such einfach nach "servlet 4 deployment descriptor" oder "servlet 4 web.xml", jeweils ohne Anführungszeichen. Dann kommst Du sehr schnell auf Seiten, wo Du den Kopf einfach rauskopieren kannst. Die Quelle für die Schemas: http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html

Die im web-app-Element angegebenen Attribute xmlns und xmlns:xsi definieren Namensräume, die in diesem Element verwendet werden. Mit schemaLocation wird mitgeteilt, welche Schemas verwendet werden. Diese Vorgehensweise ist Standard-XML und hat nicht speziell etwas mit Java EE zu tun.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Keine Verbindung zu MySql über Netbeans Java Basics - Anfänger-Themen 15
M Keine Datenbank verbindung Java Basics - Anfänger-Themen 14
P Zugriff auf Attribute einer Klasse, zu der keine Verbindung besteht Java Basics - Anfänger-Themen 11
E Input/Output Socket bekommt keine Verbindung bei funktionierendem Fremdziel Java Basics - Anfänger-Themen 2
I Datenbank - nach erster Verbindung keine Verbindung mehr Java Basics - Anfänger-Themen 3
G Programmstart mit JAR File - keine DB-Verbindung Java Basics - Anfänger-Themen 2
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
G Endlosschleife keine Rückgabe Java Basics - Anfänger-Themen 36
Nooobi Regex und .matches() geben keine Ausnahme Java Basics - Anfänger-Themen 10
berserkerdq2 Warum ist das keine Referenzkopie mehr? Java Basics - Anfänger-Themen 26
O Java 17 keine Pflicht um Exceptiones zu behandeln? Java Basics - Anfänger-Themen 2
nbergmann Installation unter jdk.java.net: Keine ZIP-Datei zum entpacken Java Basics - Anfänger-Themen 2
M Eclipse kennt keine String Klasse mehr Java Basics - Anfänger-Themen 1
K Erste Schritte "Taschenrechner" zeigt keine Komma Zahlen an. Java Basics - Anfänger-Themen 8
M Keine Ausführung von System.out.println() Java Basics - Anfänger-Themen 3
H Warum kann man keine Parameter in die main-Methode packen? Java Basics - Anfänger-Themen 4
B Nach eingefügtem Code erkennt Compiler keine Instanzvar und meldet SyntaxError Java Basics - Anfänger-Themen 2
A keine Ergebnisse - String nummer in array nummer converting Java Basics - Anfänger-Themen 1
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
B Ich kann keine Hühner töten Java Basics - Anfänger-Themen 49
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
I Regex findet keine Treffer Java Basics - Anfänger-Themen 4
B Keine Ausgabe .. Woran liegt das? Ich komme nicht weiter Java Basics - Anfänger-Themen 14
T Bei mir wird keine javac angezeigt sondern nur javacpl Java Basics - Anfänger-Themen 2
O Input/Output newbile und keine Ahnung! Java Basics - Anfänger-Themen 16
S Kann keine Bilder laden? Java Basics - Anfänger-Themen 9
C Problem: PC ohne Internet und keine Möglichkeit Programme zu laden Java Basics - Anfänger-Themen 5
Bun17 Keine Ausgabe in der Konsole Java Basics - Anfänger-Themen 2
D jsoup.select findet keine elemente Java Basics - Anfänger-Themen 2
U Null Exception aber keine Ahnung warum Java Basics - Anfänger-Themen 5
W Was bedeutet im Struktogramm „zufall“ aufrufen (keine Parameterübergabe)? Java Basics - Anfänger-Themen 8
T Keine Ahnung vom Programieren Java Basics - Anfänger-Themen 28
A SelectionSort bringt keine konstanten Ergebnisse Java Basics - Anfänger-Themen 4
J RPN Taschenrechner - keine Lösung!! Java Basics - Anfänger-Themen 84
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
C Keine javac.exe in bin-Datei Java Basics - Anfänger-Themen 3
A Vollkommene Zahlen: Findet keine Einzige Java Basics - Anfänger-Themen 9
J Input/Output javac HelloWorld.java - Keine Textausgabe in der Konsole Java Basics - Anfänger-Themen 4
H JDK installieren keine Installationsroutine bei Javainstallation sichtbar Java Basics - Anfänger-Themen 4
H Buttons zeigen keine Reaktion Java Basics - Anfänger-Themen 6
I Programm von mir - keine Ahnung mehr ob richtig falsch:-( Java Basics - Anfänger-Themen 6
D Datentypen Datentyperstellung | Kompiler sagt Syntax Error doch ich find keine Lösung Java Basics - Anfänger-Themen 2
snipesss IDE zeigt keine Fehler an, Programm wird jedoch nicht ausgeführt. Java Basics - Anfänger-Themen 18
Khorgoroth Erste Schritte Keine Ausgabe Java Basics - Anfänger-Themen 2
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
Z AWT package -> keine Konsole? Java Basics - Anfänger-Themen 2
Henri keine Ausgabe Java Basics - Anfänger-Themen 5
J TableView zeigt keine Daten an Java Basics - Anfänger-Themen 14
C Java stellt unter Windows keine Umlaute dar Java Basics - Anfänger-Themen 9
A Keine Konsolenausgabe Java Basics - Anfänger-Themen 5
D Methoden Filewriter macht keine Zeilenumbrüche Java Basics - Anfänger-Themen 3
D Compiler-Fehler NullPointerExeption aber Ecplise zeigt keine Fehler an?! Java Basics - Anfänger-Themen 8
D addActionListener zeigt keine Wirkung Java Basics - Anfänger-Themen 8
S Warum erlaubt ein while-Loop keine Variablen-Declaration wie der for-Loop..? Java Basics - Anfänger-Themen 6
M Lottozahlen 6 aus 49 keine doppelten Java Basics - Anfänger-Themen 5
D Keine Ausgabe in meinem Helden Programm Java Basics - Anfänger-Themen 2
M Keine Ausgabe Java Basics - Anfänger-Themen 4
C PrintWriter schreibt keine in Strings enthaltenen Zeilenumbrüche Java Basics - Anfänger-Themen 9
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
J Rückgabe als Wert, keine Referenz Java Basics - Anfänger-Themen 3
K Keine doppelten Zufallszahlen im Array Java Basics - Anfänger-Themen 17
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
1 Mini Programm, keine Eingabe möglich.. Java Basics - Anfänger-Themen 6
P Wiedereinstieg und kann keine Dateien mehr öffnen... Java Basics - Anfänger-Themen 13
R Keine doppelten Zufallszahlen Java Basics - Anfänger-Themen 2
T Buffererwriter keine Exception obwohl Client weg Java Basics - Anfänger-Themen 2
D Java Eclipse hat scheinbar keine library Java Basics - Anfänger-Themen 2
E Keine Ausgabe der Konsole Java Basics - Anfänger-Themen 4
Pentalon Eclipse JUNO keine Vorschläge von Methoden bzw. Interfaces der eigenen Klassen Java Basics - Anfänger-Themen 5
tuttle64 Keine Umlaute im Dos Fenster Java Basics - Anfänger-Themen 12
D Erstellte Jar datei zeigt keine Bilder an Java Basics - Anfänger-Themen 5
L Klassen Ich kann keine .jar Dateien mehr öffnen Java Basics - Anfänger-Themen 4
J Haben Chars wirklich keine KeyCodes? Java Basics - Anfänger-Themen 12
L Applet : keine Recht für Zugriff auf Clipboard (trotz Zertifikat) Java Basics - Anfänger-Themen 4
A contains bzw. indexOf liefert keine Treffer? Java Basics - Anfänger-Themen 3
M Java Webstart keine Zugriffe Java Basics - Anfänger-Themen 7
W Eclipse erstellt keine Klassen Java Basics - Anfänger-Themen 6
B Aus einem Eclipse Projekt eine .jar - keine Bilder drin Java Basics - Anfänger-Themen 7
K org.h2.jdbc.JdbcSQLException: Keine Daten verfügbar Java Basics - Anfänger-Themen 9
J Mehrere Zufallszahlen erzeugen, aber keine darf doppelt erzeugt werden - Wie? Java Basics - Anfänger-Themen 5
E String soll mit Großbuchstaben anfangen und keine Sonderzeichen enthalten Java Basics - Anfänger-Themen 4
J InputStreamReader + BufferedReader - keine Eingabemöglichkeit Java Basics - Anfänger-Themen 10
T JTable keine spaltenbeschriftung Java Basics - Anfänger-Themen 2
G Input/Output FilenameFilter aber bitte keine Unterordner Java Basics - Anfänger-Themen 5
M nach jar export keine db abfrage möglich Java Basics - Anfänger-Themen 2
G JDK installieren keine eclipse.exe gefunden Java Basics - Anfänger-Themen 16
S Erste Schritte Wo steht eigentlich das ein jar keine andere jars enthalten darf? Java Basics - Anfänger-Themen 19
O Erste Schritte Klassenname zurückgeben, keine instanz Java Basics - Anfänger-Themen 23
K keine Reaktion im TableModel nach ändern der liste? Java Basics - Anfänger-Themen 2
T keine buchstaben!nur zahlen eingabe möglich Java Basics - Anfänger-Themen 48
M keine geschwungenen Klammern Java Basics - Anfänger-Themen 9
V JavaApplet versendet keine mail Java Basics - Anfänger-Themen 8
B Interface Nach "package"-Nennung keine Toolbar-Icons mehr Java Basics - Anfänger-Themen 5
B Geerbte Instanz kann keine void Methode ausführen?! Java Basics - Anfänger-Themen 15
S Java Web Start lädt keine Bilder Java Basics - Anfänger-Themen 2
P Keine Rechenoperationen bei Doublewert? Java Basics - Anfänger-Themen 4
B Variablen keine Arrayübergabe für getter im Interface Java Basics - Anfänger-Themen 8
I Habe keine Idee was ich als Anfänger programmieren kann. Java Basics - Anfänger-Themen 4
R Kalender speichert keine Zeit Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben