无法弄清楚JDBC ClassNotFoundException(JTDS驱动程序)

时间:2014-01-15 20:27:25

标签: java sql sql-server oracle jtds

关于我的问题的一点背景:我试图从Oracle数据库复制Microsoft SQL系统上的表。除了提供密码和用户访问表之外,我无法编辑或对MSSQL数据库执行任何操作。

我成功使用Oracle SQL Developer来连接和查看我想要的表(使用第三方JDBC驱动程序),但是我想在我的Oracle数据库中设置自动副本,所以我试图使用相同的一些存储的java代码中的驱动程序。

我有一个java函数,它应该做的就是去计算表中的条目数。到目前为止,我的代码看起来像:

public static String getCount() {
Statement stmt = null;
Connection conn = null;
int rowCount = 0;
String message = "";
try {
  Class.forName("net.sourceforge.jtds.jdbc.Driver");
}
catch(ClassNotFoundException e) {
  System.err.println("Error loading driver: " + e);
  message = message + e + " -ER1 \n";
}
try {
  conn = DriverManager.getConnection("jdbc:jtds:sqlserver://site.school.edu:2000/ACCESS", "user", "password");
  stmt = conn.createStatement();
  String strSelect = "select 1 as field;";
  ResultSet rset = stmt.executeQuery(strSelect);
  while (rset.next()) {
   ++rowCount;
 }
}
catch(SQLException ex) {
  ex.printStackTrace();
  message = message + ex.getSQLState() + " -ER2";
}
finally {
  try {
    if (stmt != null) stmt.close(); 
    if (conn != null) conn.close();
  } catch(SQLException ex) {
    ex.printStackTrace();
    message = message + ex.getSQLState() + "-ER3";
  }
}
return message;
}

正在从存储的函数调用:

CREATE OR REPLACE function Schema.java_testMessage return varchar2
as language java 
name 'ConnectAndQuery.getCount() return java.lang.String';

我在TOAD的脚本中调用它:

set serveroutput on;

declare
 words varchar2(400);
 begin
   words := KSL_ADMIN.java_testMessage;
   dbms_output.put_line(words);
 end;

但结果是我得到了:

 java.lang.ClassNotFoundException: net/sourceforge/jtds/jdbc/Driver -ER1 
 08001 -ER2
 PL/SQL procedure successfully completed.

我在类路径中有jar文件,我想不出任何理由它不应该拥有查看jar的nessecary权限,据我所知,我的所有内容都拼写正确。

请帮我弄清楚我做错了什么。或者,如果没有真正安装任何东西,可能有更简单的方法将Oracle DB连接到MSSQL DB。任何有关这方面的知识都是受欢迎的,因为我对很多这方面都很陌生。

1 个答案:

答案 0 :(得分:0)

Oracle有自己的内部java虚拟机,它不使用系统类路径。如果需要外部库,则必须将它们“加载”到内部JVM中。您可以使用Oracle的loadjava工具执行此操作。

请参阅Oracle的loadjava文档(http://docs.oracle.com/cd/B28359_01/java.111/b31225/cheleven.htm#JJDEV10060