In Java File (nicht in Java Projekt) mysql Driver importieren

Dimax

Top Contributor
Guten Tag,

Liebe Kollegen ich brauche Hilfe bei dem Import von mysql-Driver in einem Java File. Die Datei Abra.java und der mysql-Driver liegen aufm Desktop.
In Abra brauche ich Datenbankverbindung.
Mein Versuch:

Abra.java
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
import java.util.regex.Pattern;
import java.net.URL;
import java.net.URLClassLoader;
//import com.mysql.cj.jdbc.Driver.;


public class Abra {
    public static void main(String args[]){
        String  log="";
        String pfad=args[0];
        int type=Integer.valueOf(args[1]);
        String Projekt_id=args[2];
        String DRIVER = "com.mysql.cj.jdbc.Driver";
        String URL = "jdbc:mysql://localhost:3306/blabla?useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC";
        String PWD = "****";
        //String LIB = "****";
        String USER = "****";
        
        
        try {
            URLClassLoader child=
                    new URLClassLoader(new URL[] {
                            new URL("file://./mysql-connector-java-8.0.11.jar")},
                            Abra.class.getClassLoader());
            
            Class.forName(DRIVER,true,child);
            Connection cn=DriverManager.getConnection(URL,USER,PWD);
scheitert an ClassNotFound Exception.Die Variante path Variable zu dem mysql-connector-java-8.0.11.jar zu setzen macht das Ganze sinnlos(muss portable sein).
 
Wieso versuchst du da das über den URLClassLoader zu machen? Das verstehe ich nicht ganz.

Du gibst das jar file einfach beim Aufruf mit als classpath an und schon hast Du das jar file auch mit geladen.
Und wenn Du es weiter geben willst, dann erstellst Du ja ein jar. Das kann dann entweder alles beinhalten ("fat jar") oder im Manifest gibt du noch den Classpath an.
 
Ok, minimales Beispiel:

Zwei Klassen:
- jar1.Jar1Class mit einer print Methode.
- jar2.Jar2Class mit einer public static void main in dem Jar1Class benutzt wird (Neue Instanz + Aufruf print())
Lässt sich so kompilieren und testen.

Packen wir nun in zwei jar Dateien:
jar1.jar bekommt jar1/
jar2.jar bekommt jar2+ Manifest:
Manifest-Version: 1.0
Main-Class: jar2.Jar2Class
Class-Path: ./jar1.jar

Wenn man nun in einem Verzeichnis jar1.jar und jar2.jar hat kann man einfach java -jar jar2.jar aufrufen, ohne dass man jar1.jar extra angeben muss.

Das wäre jetzt ein minimales Beispiel.

Und das Class-Path kannst Du halt auch so anpassen und dann muss nur die mysql connector jar mit dem richtigen Namen an der vorgegebenen Stelle liegen...
 

Zurück
Oben