gpt4 book ai didi

java.lang.ClassNotFoundException : com/microsoft/sqlserver/jdbc/SQLServerDriver

转载 作者:行者123 更新时间:2023-12-01 10:37:21 32 4
gpt4 key购买 nike

我对 JAVA 确实很陌生,但需要调用我有权访问的 SQL Server 函数。

我已经在 pl/sql 函数中构建了 JAVA 调用,并成功从我的环境之一调用它。当我移动到另一个环境时,出现错误

ORA-29532:Java 调用因未捕获的 Java 异常而终止:java.lang.ClassNotFoundException:com/microsoft/sqlserver/jdbc/SQLServerDriver

我对此进行了彻底的研究,并检查了 JAVA 的正确安装,这看起来不错,但我显然遗漏了一些东西。我需要以某种方式跟踪此环境中的不同之处,它在其他环境中运行的事实证明该类是正确的,因此它必须是一个配置问题。

JAVA类

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.net.Socket;
import java.io.IOException;

public class xxiceHJ
{
protected static String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
protected static String DB_URL = "jdbc:sqlserver://999.999.99.99:1433";
protected static String USER = "xxxx";
protected static String PWD = "xxxxx123$";

public static String getOrderStatus (String OrderNumber) throws SQLException, Exception
{
Connection conn = null;
CallableStatement cs = null;
ResultSet rs = null;
String Message = null;
String WarehouseId = "01";

try
{
// Register JDBC driver
Class.forName(JDBC_DRIVER);

//Open a connection
conn = DriverManager.getConnection(DB_URL, USER, PWD);

cs = conn.prepareCall("{call usp_get_order_status(?,?,?)}");
cs.setString(1, WarehouseId);
cs.setString(2, OrderNumber);
cs.setString(3, Message);

rs = cs.executeQuery();

//if prodeure return a value
if (rs.next())
{
Message = rs.getString(1);
}

//Clean-up environment
rs.close();
cs.close();
conn.close();

// }
// catch (SQLException se)
// {
// //Handle errors for JDBC
// cfFileNumber = "SQLException" + se.toString();
// se.printStackTrace();
// }
// catch (Exception e)
// {
// //Handle errors for Class.forName
// cfFileNumber = "Exception" + e.toString();
// e.printStackTrace();
}
finally
{
//finally block used to close resources
try
{
if (rs!=null)
{
rs.close();
}
}
catch (SQLException se2)
{
//nothing we can do
}
try
{
if (cs!=null)
{
cs.close();
}
}
catch (SQLException se2)
{
//nothing we can do
}
try
{
if (conn!=null)
{
conn.close();
}
}
catch (SQLException se)
{
se.printStackTrace();
}

}
return Message;

}



}

最佳答案

CLASSPATH 变量是 Java 虚拟机 (JVM) 用于查找计算机上的 JDBC 驱动程序的搜索字符串。如果驱动程序未在 CLASSPATH 变量中列出,您在尝试加载驱动程序时会收到以下错误消息:java.lang.ClassNotFoundException:com/microsoft/jdbc/sqlserver/SQLServerDriver

JDBC 驱动程序不是 Java SDK 的一部分。如果要使用它,必须设置类路径以包含 sqljdbc.jar 文件或 sqljdbc4.jar 文件。如果类路径缺少 sqljdbc.jar 或 sqljdbc4.jar 条目,您的应用程序将抛出常见的“找不到类”异常。

sqljdbc.jar 文件和 sqljdbc4.jar 文件安装在以下位置:\sqljdbc_\\sqljdbc.jar\sqljdbc_\\sqljdbc4.jar

以下是用于 Windows 应用程序的 CLASSPATH 语句的示例:CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\sqljdbc.jar
以下是用于 Unix/Linux 应用程序的 CLASSPATH 语句的示例:CLASSPATH =.:/home/usr1/mssqlserverjdbc/Driver/sqljdbc_4.0/enu/sqljdbc.jar您必须确保 CLASSPATH 语句仅包含一个 Microsoft JDBC Driver for SQL Server,例如 sqljdbc.jar 或 sqljdbc4.jar。

更多信息请参见:
http://support.microsoft.com/kb/313100
http://msdn.microsoft.com/en-us/library/ms378526.aspx

关于java.lang.ClassNotFoundException : com/microsoft/sqlserver/jdbc/SQLServerDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34588568/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com