无法解析 oracle.jdbc.OracleDriver

Posted

技术标签:

【中文标题】无法解析 oracle.jdbc.OracleDriver【英文标题】:Cannot resolve oracle.jdbc.OracleDriver 【发布时间】:2017-01-08 11:39:19 【问题描述】:

我正在尝试使用 ojdbc6.jar 对 jsp/Oracle 进行虚拟测试,代码如下(Test.jsp):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.sql.*"%>
<%@page import="oracle.sql.*" %>
<%@page import="oracle.jdbc.OracleDriver" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>


<html>
<head>

<title>Test</title>
</head>
<body>

<%
    Connection con = null;
    Class.forName("oracle.jdbc.OracleDriver");
    con = DriverManager.getConnection("jdbc:oracle:thin:@host:1521:oracledb",
            "user", "password");        
    con.close();
%>

</body>
</html>

当我在 Apache Tomcat 服务器上执行它时,我得到这个错误:

Jan 08, 2017 12:31:05 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: El Servlet.service() para el servlet [jsp] en el contexto con ruta [/Gest1] lanzó la excepción [No se puede compilar la clase para JSP: 

Ha tenido lugar un error en la línea: [16] en el fichero java generado: [C:\Proyecto\tomcat\apache-tomcat-9.0.0.M15-windows-x64\apache-tomcat-9.0.0.M15\work\Catalina\localhost\Gest1\org\apache\jsp\Test_jsp.java]
Only a type can be imported. oracle.jdbc.OracleDriver resolves to a package

Stacktrace:] con causa raíz
org.apache.jasper.JasperException: No se puede compilar la clase para JSP: 

Ha tenido lugar un error en la línea: [16] en el fichero java generado: [C:\Proyecto\tomcat\apache-tomcat-9.0.0.M15-windows-x64\apache-tomcat-9.0.0.M15\work\Catalina\localhost\Gest1\org\apache\jsp\Test_jsp.java]
Only a type can be imported. oracle.jdbc.OracleDriver resolves to a package

Stacktrace:
    at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
    at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:212)
    at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:457)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:377)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:333)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:600)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)

我不确定我的类路径是否配置正确,我认为这是因为似乎另一个 sniplet import Oracle.sql 有效。

【问题讨论】:

避免在JSP页面中使用java代码。 将 odbc jar 也放入 tomcat lib 中,然后尝试。 嗨。只是工作了一会,好像每次重启tomcat服务器时,我移到lib目录下的ojdbc6.jar就从这个目录中删除了。 不相关,但是:永远不要将这样的 Java 代码放入 JSP 页面。并且永远不要使用DriverManager 在 Web 应用程序中获得连接。改用适当的数据源(并且 Class.forName() 多年来一直没有必要) 【参考方案1】:

Class.forName("oracle.jdbc.OracleDriver"); ------>不正确

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

使用第二个。 希望对你有帮助

【讨论】:

【参考方案2】:
  Class.forName("oracle.jdbc.driver.OracleDriver");

你错过了司机

【讨论】:

【参考方案3】:

我不明白你为什么要导入oracle.jdbc.OracleDriver.* 您已经导入了 java.sql.*。 并且还提供了class.forName('oracle.jdbc.OracleDriver'). 所以删除这些行

<%@page import="oracle.sql.*" %>
<%@page import="oracle.jdbc.OracleDriver" %>

并确保您在 tomat lib 文件夹中添加了 ojdbc6.jar。

【讨论】:

【参考方案4】:

我想我明白了。

项目属性 -> 部署程序集 -> 添加 -> Java 构建路径条目 -> ojdbc6.jar

然后应用。谢谢大家!。

【讨论】:

以上是关于无法解析 oracle.jdbc.OracleDriver的主要内容,如果未能解决你的问题,请参考以下文章

Constraint 无法解析为类型

Ubuntu 无法解析域名

无法解析的外部符号 C++

C++无法解析的外部命令和外部符号

无法解析的外部符号

ACE编程,无法解析外部符号