java.lang.NoSchMethodError: oracle.i118n.text.converter.CharacterConverterOGS.getInstancec(I)Loracle/i18n/text/converter/ChatacterConverter;

java.lang.NoSchMethodError: oracle.i118n.text.converter.CharacterConverterOGS.getInstancec(I)Loracle/i18n/text/converter/ChatacterConverter;

好吧,这个问题完全困扰了我,我当然希望在我完全放弃这个项目之前有人能给出答案。

基本上我正在尝试从指向 java servlet(2.5) 的网站进行连接,然后我想从那里使用 JDBC 连接到数据库。

用户和密码是数据库凭据。

现在,当我将同一个 dbconn 文件与 java class(在控制台打印成功)一起使用时,一切都很好用,但是如果我尝试用 servlet 做同样的事情产生如下所示的错误。

HTTP ERROR 500

Problem accessing /ClassChat/LogonSRV. Reason:
  Server Error

Caused by:

java.lang.NoSchMethodError: oracle.i118n.text.converter.CharacterConverterOGS.getInstancec(I)Loracle/i18n/text/converter/ChatacterConverter;
      at oracle.sql.converter.CharacterConverterFactoryOGS.make(CharacterConverterFactoryOGS.java:43)
      at oracle.sql.CharacterSetWithConverter.getInstance(CharacterSetWithConverter.java:95)
      at oracle.sql.CharacterSetFactoryThin.make(CharacterSetFactoryThin.java:95)
  at oracle.sql.CharacterSet.make(CharacterSet.java:450)
  at oracle.jdbc.driver.DBConversion.init(DBConversion.java:151)
  at oracle.jdbc.driver.DBConversion.<init>(DBConversion.java:112)
  at oracle.jdbc.driver.T4CConection.connect(T4CConection.java:1075)
  at oracle.jdbc.driver.T4CConection.logon(T4CConection.java:301)
  at oracle.jdbc.driver.PhysicalConnection.<init>(T4CConection.java:221)
  at oracle.jdbc.driver.T4CConection.<init>(DBConversion.java:151)
  at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
  at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
  at java.sql.DriverManager.getConnection(DriverManager.java:664)
  at java.sql.DriverManager.getConnection(DriverManager.java:247)
  at bl.dbConn.getConnection(dbConn.java:32)
  at bl.Conny.Conns(Conny.java:30)
  at bl.LogonSRV.service(LogonSRV.java:26)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
  at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
  ....
  ....

a link to the full error list : http://i.stack.imgur.com/O9DrL.jpg

我已经为 JDBC 和 Servlet 附上了正确的 Jars,并尝试了书中的所有技巧,包括调用一个常规的 java class,后者又会调用连接。

为了更容易找到错误,这里是我使用的一些代码:

[bl.LogonSRV] 中的第 26 行(产生错误的行)。

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // Get the data from the jsp.
  String strUser = request.getParameter("username");
  String strPass = request.getParameter("password");

  // In case this is the first time the page is loading.
  if (strUser == null) {
    // Redirect to login page.
    request.getRequestDispatcher("Login.jsp").forward(request, response);
  } else {
    // Connect to the DB (the line producing the error).
    String Error = Conny.Conns(strUser, strPass);
    request.getRequestDispatcher("Success.jsp").forward(request, response);
  }
}

[bl.Conny] 中的第 30 行(产生错误的行)。

public static String Conns(String User, String Pass) {

  Connection conni = null;
  String Error = null;

  try {
    conni = dbConn.getInstance().getConnection(User, Pass);
  } catch (SQLException ex) {
    Error = "Error in connection"; 
  }

   return (Error)
}

[bl.dbConn] 中的第 32 行(产生错误的行)。

// Connect to the DB.
public Connection getConnection(String Username, String Password) throws SQLException {

  return (DriverManager.getConnection(SERVER_ADDRESS, Username, Password));

}

P.S。我知道需要关闭连接,并且发送密码不安全,但首先我想看看它是否有效,以及如何修复此错误。

谢谢大家的帮助,最后的问题是我的项目中有一个以前的.jar文件被删除了,但是删除后我没有再次进行部署过程。

我想有些东西你只能通过艰苦的方式学习...

当一个人有不兼容的 ojdbc 驱动程序和 JDK 以及 orai18n.jar 时,它也可能发生。 使用兼容的 ojdbc 解决了我的问题。

检查 Oracle compatibility matrices 以获得合适的 ojdbc 版本。