JDBC驱动程序 - ClassNotFoundException,NetBeans

时间:2014-08-04 13:46:43

标签: java netbeans jdbc database-connection

我经常搜索并花了很多时间尝试注册JDBC驱动程序。

首先,我将我的ojdbc7.jar文件(从Oracle下载)复制到如下所示的目录中:

Driver File(s): /Users/Kamil/glassfish4/jdk7/jre/lib/ext/ojdbc7.jar
Driver Class: oracle.jdbc.OracleDriver
// this is copied from Services/Databases/Drivers/ojdbc

然后,我尝试了以下代码:

try {
    Driver myDriver = new oracle.jdbc.driver.OracleDriver();
    DriverManager.registerDriver(myDriver);
} catch (ClassNotFoundException ex) {
    System.out.println("Error: unable to load driver class!");
    System.exit(1);
}

......而且这一个:

try {
    Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException ex) {
    System.out.println("Error: unable to load driver class!");
    System.exit(1);
}

...并改为使用此行:

Class.forName("oracle.jdbc.driver.OracleDriver");

我总是得到ClassNotFoundException :(

以下是我尝试运行的代码:

Connection DBconn;
String USER = "root";
String PASS = "root";
System.out.println("Connecting to database...");

DBconn = DriverManager.getConnection("mysql://localhost:3306/RestToolDatabase", USER, PASS);

System.out.println("Creating statement...");
Statement stmt = DBconn.createStatement();
String sql;
sql = "select surname, id, age\n"
        + "from customers \n"
        + "where name = \"maria\" \n"
        + "order by id;";
ResultSet rs = stmt.executeQuery(sql);

我还阅读了如here所描述的那样设置类路径:

  • 右键单击您的项目。
  • 选择属性。
  • 在左侧单击“库”。
  • 在“编译”选项卡下 - 单击“添加Jar /文件夹”按钮。

    但NetBeans中没有“属性/库”选项......

我使用Maven并且某些库添加了以下依赖项:

<dependency>
    <groupId>ojdbc</groupId>
    <artifactId>ojdbc</artifactId>
    <version>14</version>
    <type>pom</type>
</dependency>

也许有一些解决方法或其他方式自动添加它?它应该很简单,但我没有经验,浪费了很多时间。请帮忙。

编辑:感谢您的回复,是的,我在localhost使用MySQL服务器:3306 [root]。我在这里安装了MySQL JDBC连接器:

/Applications/NetBeans/NetBeans 8.0.app/Contents/Resources/NetBeans/ide/modules/ext/mysql-connector-java-5.1.23-bin.jar

当我转到“服务”时 - &gt; “司机” - &gt; “MySQL(Connector / J驱动程序)”完全按照你的建议有驱动程序类路径,所以我现在使用Class.forName(“com.mysql.jdbc.Driver”)。 我右键单击“MySQL(Connector / J driver)”驱动程序并转到“Connect Using ...” - &gt; “localhost,端口3306,用户,密码”。它现在连接,我看到新的连接。但我仍然得到ClassNotFoundException。

编辑2 - 此解决方案对我有用:

我在pom.xml中添加了以下依赖项:

    </dependency>
        <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.23</version>
</dependency>

......和建设申请;驱动程序已下载并安装。就这么简单......我花了很多时间在这上面......它有效 - 是的! :)

4 个答案:

答案 0 :(得分:1)

您正在MySQL数据库上使用Oracle JDBC驱动程序,您应该使用

    Class.forName("com.mysql.jdbc.Driver");

编辑:感谢@duffymo和@ Mark-Rotteveel的评论,他们注意到连接的URL也是错误的,正确的连接是:

    Connection DBconn;
    String USER = "root";
    String PASS = "root";
    DBconn = DriverManager.getConnection("jdbc:mysql://localhost:3306/RestToolDatabase?" + "user="+USER+"&password="+PASS);

答案 1 :(得分:1)

设置类路径:

  1. 下载JAR JDBC连接器/驱动程序
  2. 复制项目子文件夹中的文件(例如:libs)(不是&#39; src&#39;)
  3. 项目 - &gt;属性 - &gt;库 - &gt;添加Jar /文件夹 - &gt;选择文件
  4. 包装相关的图书馆,其相对路径为&#39; dist&#39; :

    1. 项目 - &gt;构建 - &gt;打包 - &gt;检查&#34;复制相关的Librairies&#34;

答案 2 :(得分:0)

我认为JDBC JAR不属于该目录。 CNF例外支持我。

我建议将JAR放在您的项目WEB-INF / lib中,重新打包WAR,然后重试。

这一行是正确的:

Class.forName("oracle.jdbc.driver.OracleDriver");

完整的类名必须与JAR中的名称相匹配。这是唯一能做到的。

您必须使用与您的数据库匹配的驱动程序:Oracle for Oracle,MySQL for MySQL。你用的是什么数据库?

答案 3 :(得分:0)

cmd = r'''
echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", $3/$2*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"
'''

这对我有用。由于Netbeans apache中没有属性和库。祝你好运。