Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с MySQL в Blazix / 16 сообщений из 16, страница 1 из 1
11.01.2013, 11:05:32
    #38105991
Finesse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
Здравствуйте. Я всё никак не могу подключиться к MySQL серверу из JSP (Java Server Pages) файла, которые исолняется на сервере Blazix. Я читал и делал примеры из нескольких статей (например этой ), сначала возникало исключение с ошибкой java.lang.ClassNotFoundException: com.mysql.jdbc.Driver . Я разобрался, что нужен драйвер, скачал его отсюда , закинул .jar файл в папку ...\Blazix\webfiles\WEB-INF\classes , и прописал этот адрес в файле настроек сервера web.ini:
Код: plaintext
server.classDir: D:\PROGRA~1\Blazix\webfiles\WEB-INF\classes
В итоге ошибка пропала, но появилась новая (при исполнении, а не компиляции): java.lang.NoClassDefFoundError: Could not initialize class com.mysql.jdbc.Util . Судя по всему ошибка где-то внутри драйвера.

Исходный код
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<%!
Statement stmp;
Connection con;
ResultSet rst;
%>
<!DOCTYPE html>
<html>
	<head>
		<title>Тестовый Java скрипт</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1" />
		<meta name="apple-mobile-web-app-capable" content="yes" />
	</head>
	<body>
		<%
		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "1234"); // На этой строке вылезает ошибка

			stmp = con.createStatement();
			rst = stmp.executeQuery("SELECT * FROM articles");

			out.println("<table border=\"1\">");
			while(rst.next()) {
				out.println("<tr><td>" + rst.getString("id") + "</td><td>" + rst.getString("date") + "</td><td>" + rst.getString("title") + "</td><td>" + rst.getString("text") + "</td></tr>");
			}
			out.println("</table>");

			rst.close();
			stmp.close();
			con.close();
		} catch(Exception ex) {
			out.println("<p>" + String.valueOf(ex) + "</p>");
		}
		%>
	</body>
</html>



Получается, что либо я, либо сервер, либо драйвер кривой. Помогите, пожалуйста, регить проблему. Или посоветуйте нормальный сервер, поддерживающий JSP, в котором всё нормально работает.
...
Рейтинг: 0 / 0
11.01.2013, 11:12:09
    #38106003
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
Вместо кода стоило привести ошибку полностью.
...
Рейтинг: 0 / 0
11.01.2013, 11:13:17
    #38106008
Finesse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
Текст ошибки:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<HTML><HEAD><TITLE>Error in processing page</TITLE></HEAD>
<BODY>
<IMG SRC="/_blazix_error_header.jsp"><P>
A java exception has occurred during the processing of this request.
<P><PRE>
java.lang.NoClassDefFoundError: Could not initialize class com.mysql.jdbc.Util
	at com.mysql.jdbc.NonRegisteringDriver.parseURL(NonRegisteringDriver.java:764)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at desisoft_jsp_test_jsp1357885355593._jspService(desisoft_jsp_test_jsp1357885355593.java:119)
	at desisoft.server.JspBaseClass.service(JspBaseClass.java:48)
	at desisoft.server.servlets.Servlet.service(Servlet.java:86)

</PRE>
</BODY></HTML>
...
Рейтинг: 0 / 0
11.01.2013, 11:15:33
    #38106014
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
Blazix это обязательное условие? Поделка какая-то. А ещё у вас тормозить будет дико, потому что вы каждый раз пересоздаёте JDBC соединение. В серверных решениях, обычно используют пул. В документации к нормальным серверам это подробно описано.
...
Рейтинг: 0 / 0
11.01.2013, 11:18:44
    #38106021
Finesse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
BlazkowiczBlazix это обязательное условие? Поделка какая-то. А ещё у вас тормозить будет дико, потому что вы каждый раз пересоздаёте JDBC соединение. В серверных решениях, обычно используют пул. В документации к нормальным серверам это подробно описано.
Нет, не обязательно, лишь бы JSP поддерживалось. В законченном решении я бы сделал объект соединения, который создавался бы при первом запуске страницы и работал бы на всех остальных, а в исходном тексте тест. Посоветуй, пожалуйста, какой-нибудь популярный сервер под Windos.
...
Рейтинг: 0 / 0
11.01.2013, 11:23:59
    #38106031
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
По той причине что вы не используете printStrackTrace у вас потерялось оригинальное исключение, которое стало причиной этого.
Используйте ex.printStackTrace(out);
и покажите что там нового появилось.
...
Рейтинг: 0 / 0
11.01.2013, 11:24:42
    #38106033
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
...
Рейтинг: 0 / 0
11.01.2013, 11:30:45
    #38106052
Finesse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
BlazkowiczПо той причине что вы не используете printStrackTrace у вас потерялось оригинальное исключение, которое стало причиной этого.
Используйте ex.printStackTrace(out);
и покажите что там нового появилось.
Ты имеешь ввиду использовать этот код в try? Если да, то компилятор ругается, что у ex нету метода printStackTrace. Попробовал out.println(ex.getMessage()); — всё как раньше.

Сейчас поужинаю и займусь томкэтом.
...
Рейтинг: 0 / 0
11.01.2013, 11:34:58
    #38106061
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
FinesseТы имеешь ввиду использовать этот код в try?

в catch, там вроде у тебя вывод ошибки?

FinesseЕсли да, то компилятор ругается, что у ex нету метода printStackTrace. Попробовал out.println(ex.getMessage()); — всё как раньше.

А куда делся?
http://docs.oracle.com/javase/6/docs/api/java/lang/Throwable.html#printStackTrace%28java.io.PrintStream%29
...
Рейтинг: 0 / 0
11.01.2013, 11:39:22
    #38106069
Finesse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
Blazkowiczв catch, там вроде у тебя вывод ошибки?
Да, в catch, я перепутал


BlazkowiczА куда делся?
http://docs.oracle.com/javase/6/docs/api/java/lang/Throwable.html#printStackTrace%28java.io.PrintStream%29
Даже не представляю, мистика, наверное :)

Вот кусок кода:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "1234");

			/*stmp = con.createStatement();
			rst = stmp.executeQuery("SELECT * FROM articles");

			out.println("<table border=\"1\">");
			while(rst.next()) {
				out.println("<tr><td>" + rst.getString("id") + "</td><td>" + rst.getString("date") + "</td><td>" + rst.getString("title") + "</td><td>" + rst.getString("text") + "</td></tr>");
			}
			out.println("</table>");

			rst.close();
			stmp.close();
			con.close();*/
		} catch(Exception ex) {
			ex.printStackTrace(out);
			//out.println(ex.getMessage());
		}


И текст ошибки при компиляции:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<HTML><TITLE>JSP Compilation Error</TITLE><BODY><H3>Error(s) in compiling D:\Program Files\Blazix\webfiles\test.jsp</H3><PRE><FONT COLOR="#FF0000">D:\PROGRA~1\Blazix\jspdir\test_jsp.java:134: error: no suitable method found for printStackTrace(JspWriter)
			ex.printStackTrace(out);
			  ^
    method Throwable.printStackTrace(PrintWriter) is not applicable
      (actual argument JspWriter cannot be converted to PrintWriter by method invocation conversion)
    method Throwable.printStackTrace(PrintStream) is not applicable
      (actual argument JspWriter cannot be converted to PrintStream by method invocation conversion)
    method Throwable.printStackTrace() is not applicable
      (actual and formal argument lists differ in length)
1 error
</FONT><PRE></BODY></HTML>
...
Рейтинг: 0 / 0
11.01.2013, 11:40:18
    #38106072
Finesse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
BlazkowiczFinesseТы имеешь ввиду использовать этот код в try?

в catch, там вроде у тебя вывод ошибки?
Да, в catch, я перепутал
...
Рейтинг: 0 / 0
11.01.2013, 11:41:30
    #38106075
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
ох уж мне это ваше говно-жсп. Он же явно говорит не "метод не найдет", а "тип аргумента не походит"
Тогда наверное так
printStackTrace(new PrintWriter(out));
...
Рейтинг: 0 / 0
11.01.2013, 11:45:21
    #38106081
Finesse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
Blazkowiczох уж мне это ваше говно-жсп. Он же явно говорит не "метод не найдет", а "тип аргумента не походит"
Тогда наверное так
printStackTrace(new PrintWriter(out));
Ошибки при компиляции нет, но выводится всё та же старая ошибка. И она почему-то проходит мимо этого catch. Но то, что она образуется внутри try неоспоримо, потому что если убрать ту строку с getConnection, то ошибка не возникает вообшщ.
...
Рейтинг: 0 / 0
11.01.2013, 11:50:52
    #38106089
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
FinesseОшибки при компиляции нет, но выводится всё та же старая ошибка.

Она должна быть длинее чем то что ты привел выше. Должно быть caused by.

FinesseИ она почему-то проходит мимо этого catch.
Потому что NoClassDefFoundError это Error и наследуется от Throwable, а не от Exception.
...
Рейтинг: 0 / 0
11.01.2013, 11:58:55
    #38106107
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
Вот здесь похожий случай
http://www.jppf.org/forums/index.php?topic=1606.0
На самом деле Util где-то не загрузился самый первый раз в виде
ExceptionInInitializerError
В том случае из-за экзотической локали
Can't find bundle for base name com.mysql.jdbc.LocalizedErrorMessages, locale it_IT
а после того как первая загрзка обрыгалась, все последующие обращения просто выкидывают NoClassDefFoundError без объяснения.
Ты где живешь? :)

Можно обойти проблему через системные свойства Java
Что-то типа таких
-Duser.language=en -Duser.country=EN
...
Рейтинг: 0 / 0
11.01.2013, 12:17:12
    #38106146
Finesse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с MySQL в Blazix
Blazkowicz, поставил Tomcat, запустил тот же код, всё нормально работает. Спасибо большое за помощь! :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с MySQL в Blazix / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]