Java Compilieren über die Konsole

Tron36

Ensign
Registriert
Jan. 2011
Beiträge
209
Hallo Leute,
ich versuche, unter Windows 10 Javacode zu compilieren. Das hat jedoch trotz mehrmaligem versuchen nicht geklapt.
Der Java Code sieht folgendermaßen aus:

Code:
package db_launcher;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class DB_Launcher {
	// JDBC driver name and database URL
	private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
	private static final String DB_URL = "jdbc:mysql://localhost:2036/Students";
	// Database credentials
	private static final String USER = "mysql";
	private static final String PASS = "";

	public static void main( String[] args ) {
		System.out.println( "Hello, World" );

		Connection conn = null;
		Statement stmt = null;
		try {
			//STEP 2: Register JDBC driver
			Class.forName( JDBC_DRIVER );

			//STEP 3: Open a connection
			System.out.println( "Connecting to: " + DB_URL + " with user/pwd('" + USER + "'/'" + PASS + "')" );
			conn = DriverManager.getConnection( DB_URL, USER, PASS );

			//STEP 4: Execute a query
			stmt = conn.createStatement();
			String sql = "SELECT MatrNr, FirstName, LastName, Email FROM Student;";
			System.out.println( "Executing SQL-statement: " + sql + "\n------------------" );
			ResultSet rs = stmt.executeQuery( sql );

			//STEP 5: Extract data from result set
			while( rs.next() ) {
				//Retrieve by column name
				String matnr  = rs.getString( "MatrNr" );
				String first = rs.getString( "FirstName" );
				String last = rs.getString( "LastName" );
				//String adr = rs.getString( "Adr" );
				String email = rs.getString( "EMail" );

				//Display values
				System.out.print( "MatrNr: " + matnr);
				System.out.print( ",\tVorname: " + first);
				System.out.print( ",\tName: " + last);
				//System.out.print( ",\tAdr: " + adr);
				System.out.println( ",\tEmail: " + email);
			}
			//STEP 6: Clean-up environment
			rs.close();
			stmt.close();
			conn.close();

		} catch( SQLException se ) {
			//Handle errors for JDBC
			se.printStackTrace();

		} catch( Exception e ){
			//Handle errors for Class.forName
			e.printStackTrace();

		} finally {
			//finally block used to close resources
			try{
				if(stmt!=null)
				stmt.close();
			} catch( SQLException se2 ) {
			} // nothing we can do
			try {
				if( conn != null ) {
					conn.close();
				}
			} catch( SQLException se ) {
				se.printStackTrace();
			}
		}
		System.out.println( "------------------\nGoodbye!" );
	}
}

Der Code hat eine abhängigkeit zum MYSQL Java connector library.

Die Ordnerstruktur sieht folgendermaßen aus (der Ordner, in dem wir uns befinden ist javaDir):

JavaDir
|
|->/lib/mysql-connector-java-5.1.45-bin.jar (Gesamte library)
|
|->/src/db_launcher/DB_Launcher.java

Mit
Code:
 javac /src/db_launcher/DB_Launcher.java[code] hatte ich es Compiliert.

Mit folgender Zeile hatte ich es dann ausgeführt:
[code]
java -classpath "lib/mysql-connector-java-5.1.45-bin.jar" src/db_launcher.DB_Launcher

Als fehlermeldung kommt dann folgende Zeile:
Fehler: Hauptklasse src.db_launcher.DB_Launcher konnte nicht gefunden oder geladen werden

Ich hoffe ihr könnt mir helfen.

Lg Tron36
 
Zuletzt bearbeitet: (CODE Tag geschlossen)
Mal unabhängig von der Fehlermeldung: Warum benutzt du keine IDE?
 
Edit: erste Antwort war Murks

So,
bin das eben mal durchgegangen und das Problem scheint folgendes zu sein.

Wenn du java über die Kommandozeile aufrufst interpretiert es den gesamten Pfad den du angibst als Java Packages!

wechsle doch einfach mal in den Ordner src (cd src) und versuche dann es dann erneut diesmal dann natürlich mit:

java -classpath "../lib/mysql-connector-java-5.1.45-bin.jar" db_launcher.DB_Launcher


Und wie schon erwähnt ne IDE (NetBeans / Eclipse) ist in jedem fall hilfreich auf diese Art Problem wärst du da nämlich aller Wahrscheinlichkeit nach gar nicht erst drauf gestoßen.

LG Lio
 
Zuletzt bearbeitet:
@slumpie

ob / oder . ist an dieser Stelle vollkommen unrelevant da java beides gleich interpretiert (zumindest bei mir so unter mac os)
Ich denke mal er hat den Punkt da gemacht da "db_launcher" sein package ist aber wie gesagt außerhalb einer .jar sind für java packages und Ordner identisch.
 
Tron36 schrieb:
Mit
Code:
 javac /src/db_launcher/DB_Launcher.java[code] hatte ich es Compiliert.[/QUOTE]
Mal ganz blöd gefragt: Hat das auch kompiliert? Gibt es eine DB_Launcher.class-Datei in diesem Ordner?

Der 2. [PLAIN][code]-Tag muss übrigens
lauten.[/PLAIN]
 
Tron36 schrieb:
Code:
java -classpath "lib/mysql-connector-java-5.1.45-bin.jar" src/db_launcher.DB_Launcher

Probier es mal mit
Code:
java -classpath "lib/mysql-connector-java-5.1.45-bin.jar:src" db_launcher.DB_Launcher

Sprich: Füg zusätzlich den src-Ordner dem Classpath hinzu. Damit es funktioniert, muss unter src/db_launcher auch eine DB_Launcher.class liegen.

Alternativ: Verwende eine IDE wie eclipse oder IntelliJ. Dann musst du den Classpath auch nicht von Hand zusammenschreiben.
 

Ähnliche Themen

Zurück
Oben