java - 从 oracle 过程调用 java 时出现 ClassNotFoundException

标签 java oracle exception classnotfoundexception procedure

这是我的预言机程序:

FUNCTION JavaHefExtract_runSingle (
    p_company_cd        varchar2,
    p_srcConnString     varchar2,
    p_destConnString    varchar2,
    p_mode              number,
    p_period            number
    ) return varchar2
IS
LANGUAGE JAVA
NAME 'HefExtract.DoIt(java.lang.String, java.lang.String, java.lang.String, int, int ) return java.lang.String';

这是我的 java 函数:

import com.microsoft.sqlserver.jdbc.*;
import java.math.BigInteger;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Enumeration;
import oracle.jdbc.*;
import java.io.*;

public class HefExtract
{

 public static String DoIt(String orgName, String oracleConnstring, String sqlConnstring, int typ, int iPeriod )
    {
        String errMsg = null;
        Connection sqlConn;
        Connection oracleConn;
        try
        {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Class.forName("oracle.jdbc.OracleDriver");
            if (oracleConnstring != null)
                oracleConn = DriverManager.getConnection(oracleConnstring);
            else
                oracleConn = new OracleDriver().defaultConnection();
            sqlConn = DriverManager.getConnection(sqlConnstring);
        } catch (Throwable e1) {
            CharArrayWriter byteSink = new CharArrayWriter();
            e1.printStackTrace(new PrintWriter(byteSink));
            return byteSink.toString();
        }
        return errMsg;
}
}

当我在 PL/SQL block 中调用 oracle procedure 时,返回此错误:

java.lang.ClassNotFoundException: com/microsoft/sqlserver/jdbc/SQLServerDriver at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java) at HefExtract.DoIt(HEFEXTRACT:415)

此错误背后的原因可能是什么?

最佳答案

据我所知,在您的情况下不需要使用 Microsoft SQL Server 驱动程序。只需删除与 Microsoft 驱动程序有关的所有内容,即删除这些行:

import com.microsoft.sqlserver.jdbc.*;

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

关于java - 从 oracle 过程调用 java 时出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11813958/

相关文章:

java - 自定义身份验证管理器配置

java - 更简洁的 Builder 模式?

java - 回收站 View 不显示 Youtube 视频

oracle - 如何使用 squirrel 在 Oracle 中使用引用游标调用存储过程

PostgreSQL:如果下一条语句是 RAISE EXCEPTION,则在函数中删除外部服务器将不起作用

java - Mybatis 可以支持将动态列映射到 bean 的映射字段吗?

sql - 如何获取不在oracle select sql中的GROUP BY子句中的其他列?

mysql - 使用选择查询问题

java - 使用 JDBC 以用户定义的记录作为其 IN 参数调用 PL/SQL 过程

java - Mule - 已部署项目 - 消息有效负载的类型为 : String