2

我收到以下错误:ClassNotFoundException

java.lang.ClassNotFoundException: com.oracle.ojbdc6-11.2.0.1.0
  at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:186)
  at uk.ac.ebi.mydas.examples.Conn.main(Conn.java:23)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:601)
  at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

在我的 intelliJ IDE 上,我很确定我已经在 Maven 上正确设置了依赖项:因为在我的外部库文件夹中,列出了一个“Maven:com.oracle:ojdbc6:11.2.0.1.0”包。

我假设我的代码存在问题,无法正确处理该类。

try {
    Class.forName("com.oracle.ojbdc6");
}

我意识到 jdbc 驱动程序不在 Maven 存储库中,所以我必须直接从 oracle 网站下载它(正确的版本号)并将其加载到我的库中。然后我成功添加了 pom.xml 依赖项。

Maven:已安装 ojdbc 依赖项

最后,这是我的 POM.xml:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.1.0</version>
    </dependency>

谢谢!

编辑:尽管解决了 OracleDriver 类,问题仍然存在。 在此处输入图像描述

EDIT2:这是我在 InteliJ 上的模块/依赖项设置 在此处输入图像描述

4

2 回答 2

1

加载 jdbc 驱动程序的旧 (jdbc3) 方法是使用Class.forName(String). 每个驱动程序可能都有一个静态块,使它们向DriverManager.

您传递给的字符串Class.forName(String)是驱动程序的完全限定类名称。因此,com.oracle.ojbdc6除非com.oracle.ojbdc6-11.2.0.1.0它们是您的类路径上的实际类,否则它们是没有意义的。

而不是com.oracle.ojbdc6

try {
    Class.forName("com.oracle.ojbdc6");
}

使用oracle.jdbc.driver.OracleDriveror oracle.jdbc.OracleDriver,它们都是 Driver 类。这取决于您使用的 jdbc 驱动程序的版本。

这是一个相关的答案

于 2013-07-24T18:02:25.693 回答
0

不应该是 ojdbc6 而不是 ojbdc6 吗?

于 2013-07-24T18:02:16.747 回答