java.lang.NoSchMethodError: oracle.i118n.text.converter.CharacterConverterOGS.getInstancec(I)Loracle/i18n/text/converter/ChatacterConverter;
Ok das problem hat, verblüfft mich völlig, und ich hoffe jemand hat eine Antwort bevor ich auf dieses Projekt komplett.
Im Grunde versuche ich, eine Verbindung von einer website verweist auf ein java-servlet(2.5) und von dort aus will ich mit JDBC eine Verbindung zu der DB.
Den Benutzer und das Passwort sind die DB-Referenzen.
Nun, wenn ich den gleichen dbconn-Datei mit einem java-Klasse (Druck-Erfolg auf der Konsole) alles funktioniert wie ein Charme, aber wenn ich versuche, das gleiche zu tun, mit dem servlet erzeugt es die Fehlermeldung, die man unten sehen kann.
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)
....
....
einen link zu den vollständigen Fehler-Liste : http://i.stack.imgur.com/O9DrL.jpg
Ich angehängt habe die richtigen Gläser für die JDBC - & Servlets und versucht jeden trick im Buch einschließlich Aufruf einer regulären java-Klasse, die wiederum ruft die Verbindung.
Machen es einfacher den Fehler zu finden, hier ist der code, den ich verwende:
[Zeile 26 in der bl.LogonSRV] (die Zeile, die den Fehler produziert).
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);
}
}
[Zeile 30 in bl.Conny] (die Zeile, die den Fehler produziert).
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)
}
[Zeile 32 in bl.dbConn] (die Zeile, die den Fehler produziert).
//Connect to the DB.
public Connection getConnection(String Username, String Password) throws SQLException {
return (DriverManager.getConnection(SERVER_ADDRESS, Username, Password));
}
P. S. ich weiß, die Verbindung muss geschlossen werden, und das senden des Kennworts ist nicht sicher, aber zuerst will ich sehen, dass es funktioniert, und wie um diesen Fehler zu beheben.
- Dies könnte helfen, stackoverflow.com/questions/12943379/...
- setzen Sie Ihre stack-trace in der Frage statt der Verknüpfung aus, um eine image-Datei
- Ich wünschte, ich könnte hinzufügen, das Bild aber, weil ich bin ein neuer user, die ich jetzt noch nicht.
- fügen Sie den stack-trace als text, nicht als Bild
- Ich fügte hinzu, die meisten davon als text, sondern zu sehen, die voller Fehler, den Sie haben, auf den link klicken
- Ich sehe keine relevanten Antworten gibt.
- Bitte überprüfen Sie Ihre Gläser - vor allem denjenigen, die durch den servlet-container (tomcat/lib) nicht übereinstimmende Treiber-Versionen wäre ein möglicher Grund.
- Ich denke, diese Frage kann helfen, stackoverflow.com/questions/35186/... Auch versuchen, Ihren code ausführen von der Kommandozeile durch den Aufruf der Conny.Conns ("strUser", strPass) aus einer java-main-Methode. Im Prozess werden Sie genau herausfinden, welche Abhängigkeiten benötigt werden.
- starten Sie den Anwendungsserver neu
- Warum bist du nicht testen, die
Error
string zurückgegeben? Warum sind Sie auf einen Fehler, string, anstatt die Ausnahme gefangen werden byt der Anrufer? Einige schlechte Praxis hier. - hab dass selbe Ergebnis.
- ich habe versucht, den regulären Weg, und nach Stunden von versuchen zum ermitteln der Fehler-das ist, wo ich geblieben bin.
- Sie haben gerade doppelten unterschiedliche versionierte Oracle-JDBC-Treiber-JAR-Dateien in runtime-classpath Konflikt zueinander.
- also, wie kann ich wo finden und zu beheben?
- Es gibt zwei Tippfehler nur in der ersten Zeile des stacktrace (getInstancec() ... ChaTacterConverter). Warum?
- Basco da kann ich nicht ein Bild posten, das ich im Grunde ein zweites mal eingegeben, die Fehlermeldung. Kein internet auf dem computer, ich-bin-Kodierung auf.
- Einmal mehr: Suche alle Dateien ojdbc* in Ihrer Anwendung und container-Bibliotheken - wahrscheinlich hast du zwei verschiedene Versionen davon laufen rund um Konflikt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Danke Euch allen für die Hilfe, das problem war, dass ich hatte eine Vorherige .jar-Datei auf das Projekt, das gelöscht wurde, aber ich glaubte nicht, gehen Sie durch den deployment-Prozess wieder nach dem löschen.
Ich gues es irgendwas kann man nur lernen, auf die harte Weise...
Es kann auch auftreten, wenn man inkompatible ojdbc Fahrer und JDK zusammen mit orai18n.jar.
Kompatibel ojdbc das problem bei mir gelöst.
Überprüfen Sie die Oracle - Kompatibilität Matrizen für die entsprechenden ojdbc version.