0

我是 JDBC 新手,刚刚在 Eclipse 中编写了我的第一个程序。我使用 Oracle 11g XE 作为数据库。我已ojdbc6.jar通过将其复制到 jdk 安装的 lib 文件夹中来添加到我的类路径中。这是我的代码:

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

public class Test {

/**
 * @param args
 */

String url = "jdbc:oracle:thin:@Voldemort:1521:XE";
String username = "surender";
String password = "oracle";
Statement stmt;
String query;

public static void main(String[] args) {
    // TODO Auto-generated method stub
    new Test().work();

}

void work() {
    try {
        Connection conn = DriverManager.getConnection(url, username, password);
        stmt = conn.createStatement();
        query = "SELECT * FROM employees";
        ResultSet rset = stmt.executeQuery(query);
        while(rset.next()) {
            System.out.println(rset.getInt(1) + " " + rset.getString(2) + " " + rset.getString(3) + " " + rset.getString(4));
        }
    }
    catch(SQLException se) {
        System.out.println("Exception!!");
        se.printStackTrace();
    }
}

}

现在由于某种原因,它在 Eclipse 中不起作用,当我通过命令提示符在 IDE 外部运行它时(我在 Windows 7 上)。但是,当我在 Eclipse 中将其添加ojdbc6.jar到项目构建路径时,它在 Eclipse 中运行良好,但正如预期的那样,在提示符下仍然无法正常工作。

我在网上看了一些教程,他们都提到需要将驱动程序文件添加到类路径中,但没有别的。(我ojdbc6.jar一时兴起添加到构建路径中,有点像亲吻和告诉:p)。

现在,这是为什么呢?

构建路径中需要添加哪些资源?

如果我想在 IDE 之外运行我的项目怎么办?

提前谢谢!

4

2 回答 2

2

经验法则>> 每个依赖 jar 文件都需要添加到类路径中。即: JDBC 驱动程序或任何其他依赖的 jar。

在 Eclipse 中,您只能在将 ojdbc6.jar 添加到您的 Eclipse 项目类路径后运行您的项目,因为我们的经验法则是这样说的。

现在,如果你想从命令行运行你的项目,同样的规则也适用。为此,您需要在运行 java 程序时指定所有依赖的 jar 文件。

IE: java -classpath ojdbc6.jar . package.classname

于 2013-04-20T11:20:49.853 回答
0

为了能够使用 JDBC 驱动程序(或任何其他 Java 库),它需要位于类路径中。当从 Eclipse 中执行应用程序时,Eclipse 构建路径用作类路径。

要在 IDE 之外运行它,您需要确保在运行它时指定类路径。这可以使用以下方法完成:

java -cp yourlib.jar;ojdbc6.jar name.of.your.MainClass

(这假设 yourlib.jar 和 ojdbc6.jar 都在当前工作目录中,在 linux 上使用:而不是;

或者,如果您使用的是可执行 jar,则需要确保 ojdbc6.jar 包含在MANIFEST.MFentryClass-Path中,例如:

Class-Path: ojdbc6.jar

现在您可以将可执行 jar 运行为:

java -jar yourlib.jar

(假设所有其他事情 - 就像MainClassMANIFEST.MF设置正确)

于 2013-04-20T11:17:46.603 回答