ClassNotFoundException IntelliJ中的依赖项

时间:2013-07-24 17:52:06

标签: java jdbc intellij-idea

我收到以下错误: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 dependency installed

最后,这是我的POM.xml:

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

谢谢!

修改: 尽管正在解决OracleDriver类问题,但问题仍然存在。 enter image description here

EDIT2: 以下是InnteliJ上我的模块/依赖项设置 enter image description here

2 个答案:

答案 0 :(得分:1)

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

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

而不是

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

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

这是一个相关的answer

答案 1 :(得分:0)

不应该是ojdbc6而不是ojbdc6吗?