我收到以下错误: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依赖项。
最后,这是我的POM.xml:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
谢谢!
修改: 尽管正在解决OracleDriver类问题,但问题仍然存在。
EDIT2: 以下是InnteliJ上我的模块/依赖项设置
答案 0 :(得分: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.OracleDriver
或oracle.jdbc.OracleDriver
,它们都是驱动程序类。这取决于您使用的jdbc驱动程序的版本。
这是一个相关的answer。
答案 1 :(得分:0)
不应该是ojdbc6而不是ojbdc6吗?