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 版本。
好吧,这个问题完全困扰了我,我当然希望在我完全放弃这个项目之前有人能给出答案。
基本上我正在尝试从指向 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 版本。