java.sql.SQLException: No se encontrĂ³ un controlador adecuado para jdbc: derby:
driver (2)
Cuando invoca el comando java
con los parámetros -jar
y -classpath
, se -classpath
parámetro -classpath
. Consulte la documentación del iniciador de Java .
Puedes usar:
Unix / Linux:
java -classpath derbyclient.jar:TestDB.jar TestDB
Windows:
java -classpath derbyclient.jar;TestDB.jar TestDB
o hacer un manifiesto que agregue derbyclient.jar al classpath.
Soy un principiante con jdbc ... Tengo un problema al ejecutar este código:
Este código usa Apache Derby y para que funcione, primero inicié el servidor derby.
java -jar "C:/Program Files/Sun/JavaDB/lib/derbyrun.jar" server start
Y luego comenzó el programa
java -classpath derbyclient.jar -jar TestDB.jar
Establecí la ruta de clase C: / Archivos de programa / Sun / JavaDB / lib / derby.jar
Y siempre obtengo esa excepción
java.sql.SQLException: No se encontró un controlador adecuado para jdbc: derby: // localhost: 1527 / BOOKDB; create = true en java.sql.DriverManager.getConnection (DriverManager.java:602) en java.sql.DriverManager.getConnection ( DriverManager.java:185) en TestDB.getConnection (TestDB.java:63) en TestDB.runTest (TestDB.java:20) en TestDB.main (TestDB.java:11)
import java.sql.*;
import java.io.*;
import java.util.*;
class TestDB
{
public static void main(String args[])
{
try
{
runTest();
}
catch (SQLException ex)
{
for (Throwable t : ex)
t.printStackTrace();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
public static void runTest() throws SQLException, IOException
{
Connection conn = getConnection();
try
{
Statement stat = conn.createStatement();
stat.executeUpdate("CREATE TABLE Greetings (Message CHAR(20))");
stat.executeUpdate("INSERT INTO Greetings VALUES (''Hello, World!'')");
ResultSet result = stat.executeQuery("SELECT * FROM Greetings");
if (result.next())
System.out.println(result.getString(1));
result.close();
stat.executeUpdate("DROP TABLE Greetings");
}
finally
{
conn.close();
}
}
public static Connection getConnection() throws SQLException, IOException
{
Properties props = new Properties();
FileInputStream in = new FileInputStream("database.properties");
props.load(in);
in.close();
String drivers = props.getProperty("jdbc.drivers");
if (drivers != null) System.setProperty("jdbc.drivers", drivers);
String url = props.getProperty("jdbc.url");
String username = props.getProperty("jdbc.username");
String password = props.getProperty("jdbc.password");
return DriverManager.getConnection(url, username, password);
}
}
Cuando utiliza -jar
, -classpath
se ignora. Desde los documentos de la herramienta de comando java
:
Cuando utiliza esta opción, el archivo JAR es el origen de todas las clases de usuario y se ignoran otras configuraciones de ruta de clase de usuario.
Utilice -classpath
sin -jar
y especifique explícitamente el tipo que contiene el método principal, o haga que su manifiesto de archivo jar haga referencia al archivo jar derby.