Java:无法加载EmbeddedDerby的JDBC驱动程序
我在为EmbeddedDerby加载JDBC驱动程序时遇到问题。下面是我编译和运行程序的例子Java:无法加载EmbeddedDerby的JDBC驱动程序,java,jdbc,Java,Jdbc,我在为EmbeddedDerby加载JDBC驱动程序时遇到问题。下面是我编译和运行程序的例子 案例1: 编译:E:\java\workrements>javac-d类源代码/MyDerbyProgram.java 运行:E:\java\workrementer>java-cp类MyDerby程序 错误: 无法加载JDBC驱动程序org.apache.derby.JDBC.EmbeddedDriver 请检查您的类路径。 java.lang.ClassNotFoundException:org.
- 案例1: 编译:E:\java\workrements>javac-d类源代码/MyDerbyProgram.java 运行:E:\java\workrementer>java-cp类MyDerby程序 错误: 无法加载JDBC驱动程序org.apache.derby.JDBC.EmbeddedDriver 请检查您的类路径。 java.lang.ClassNotFoundException:org.apache.derby.jdbc.EmbeddedDriver 在java.net.URLClassLoader$1.run(URLClassLoader.java:200) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:188) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:306) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:251) 位于java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 位于java.lang.Class.forName0(本机方法) 位于java.lang.Class.forName(Class.java:164) 在MyDerbyProgram.loadDriver(MyDerbyProgram.java:143) 在MyDerbyProgram.go(MyDerbyProgram.java:38) 位于MyDerbyProgram.main(MyDerbyProgram.java:31) java.sql.SQLException:没有合适的驱动程序 SimpleApp已完成
- 案例2:如果我这样做,一切都好 编译:E:\java\workrements>javac-d类源代码/MyDerbyProgram.java 更改目录:E:\java\workrementer>cd类 运行:E:\java\workrements\class>javamyderby程序 输出: 加载了相应的驱动程序 插入的行 二,----- 1956年哈诺 1975年西贡 SimpleApp已完成
关于,
-cp
选项设置类路径,您不需要这个
谢谢您,先生。首先,我有另一个程序名Application.java,它不适用于DB。虽然我在案例1或案例2中运行了它,但它是正常的。第二,在我更复杂的程序中,我将MyDerbyProgram放在一个包名db中,因此如果我cd到db目录来运行带有案例2的MyDerbyProgram,它将不起作用。您能告诉我在案例1中如何运行我的Derby程序吗?是的,先生。我的问题是为什么我可以在案例1和案例2中运行Application.java(不使用DB),但我不能在MyDerbyProgram.java(使用DB)。它不从外部JAR导入,这就是为什么类路径(使用cp设置)不重要的原因谢谢。如果我把MyDerbyProgram.java放在包名数据库中,你能帮我运行它吗?这对我来说是一个很大的挑战(只是如何运行,因为我可以编译它)。
javac db/MyDerbyProgram.java
,然后java db.MyDerbyProgram
,并确保文件MyDerbyProgram.java位于名为db
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Properties;
public class MyDerbyProgram
{
/* the default framework is embedded*/
private String framework = "embedded";
private String driver = "org.apache.derby.jdbc.EmbeddedDriver";
private String protocol = "jdbc:derby:";
public static void main(String[] args)
{
new MyDerbyProgram().go(args);
System.out.println("SimpleApp finished");
}
void go(String[] args)
{
/* load the desired JDBC driver */
loadDriver();
try
{
Connection connection = DriverManager.getConnection(protocol + "testDB; create=true");
connection.setAutoCommit(false);
//Create table
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
statement.execute("create table location(num int, address varchar(40))");
//Insert
PreparedStatement psInsertStatement = connection.prepareStatement("insert into location values(?, ?)");
psInsertStatement.setInt(1, 1956);
psInsertStatement.setString(2, "Ha Noi");
psInsertStatement.executeUpdate();
psInsertStatement.setInt(1, 1975);
psInsertStatement.setString(2, "Sai Gon");
psInsertStatement.executeUpdate();
System.out.println("Row inserted.");
//Select
ResultSet resultSet = statement.executeQuery("select * from location");
int totalRows = 0;
resultSet.last();
totalRows = resultSet.getRow();
resultSet.beforeFirst();
System.out.println(totalRows + "-----");
String strPrintResult = "";
while(resultSet.next())
{
strPrintResult += resultSet.getString("num") + "___________________+_________________________" + resultSet.getString("address") + "\n";
}
System.out.println(strPrintResult);
//Drop table
statement.execute("drop table location");
//Commit transaction
connection.commit();
//Close
statement.close();
statement = null;
psInsertStatement.close();
psInsertStatement = null;
resultSet.close();
resultSet = null;
connection.close();
connection = null;
}
catch(SQLException se)
{
System.out.println(se.toString());
}
}
private void loadDriver() {
try {
Class.forName(driver).newInstance();
System.out.println("Loaded the appropriate driver");
} catch (ClassNotFoundException cnfe) {
System.err.println("\nUnable to load the JDBC driver " + driver);
System.err.println("Please check your CLASSPATH.");
cnfe.printStackTrace(System.err);
} catch (InstantiationException ie) {
System.err.println(
"\nUnable to instantiate the JDBC driver " + driver);
ie.printStackTrace(System.err);
} catch (IllegalAccessException iae) {
System.err.println(
"\nNot allowed to access the JDBC driver " + driver);
iae.printStackTrace(System.err);
}
}
private void parseArguments(String[] args)
{
if (args.length > 0) {
if (args[0].equalsIgnoreCase("derbyclient"))
{
framework = "derbyclient";
driver = "org.apache.derby.jdbc.ClientDriver";
protocol = "jdbc:derby://localhost:1527/";
}
}
}
}