Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Проблема при запуске Servlets из Eclipse?


Автор: unkis 24.4.2005, 13:14
Ребята возникла проблема,
установил TomCat , Eclipse и плагин Sysdeo.

Далее создал TomCat project и Servlet hallo.java

hallo.java
Код

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class hallo extends HttpServlet
{
 protected void doGet( HttpServletRequest req, HttpServletResponse res )
    throws ServletException, IOException
  {
    PrintWriter out = res.getWriter();

    out.println( "’Chr! Schnarch! Razong! Chr! Chr! Rapüh!’" );
    out.println( "(Disneys beste Comics, Band 5, S.  218)" );
  }
}


потом питаюсь запустить его, но мне видаёт следующую ошибку

Код

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object



что это за ошибка, и как её устранить?

Зарания благодарен.

Автор: batigoal 24.4.2005, 13:17
Бр-р-р... Это уже на этапе выполнения или еще при компиляции?

Автор: unkis 24.4.2005, 13:23
как я понимаю на етапе компилязии, когда нагимаю кнопку run

может я не правильно ТомКат сконфигурировал?

Автор: batigoal 24.4.2005, 15:42
Попробуй проверить переменную среды JAVA_HOME. Знаешь, как?

Автор: unkis 24.4.2005, 16:33
нет, как её проверить?

и что в ней далгно стоять?

и как её поснабит, если она не стоит?

Автор: batigoal 24.4.2005, 20:03
Если у тебя винда:
Мой компьютер --> Свойства --> Дополнительно (Advanced) --> Переменные среды (Enviroment variables).
Там в списке должна быть переменная JAVA_HOME. Если нет - надо ее добавить и в качестве значения указать путь к каталогу, в который у тебя установлен JDK. Это нужно для работы Томката.

Автор: unkis 24.4.2005, 20:53
А какой синтакс долген бить, JAVA_HOME=c:\java\jdk1.5 Правилно?

а как под линух установить и какой там синтакс?

Автор: batigoal 25.4.2005, 12:29
Под виндой надо просто нажать "Добавить" и ввести имя (JAVA_HOME) и значение (c:\java\jdk1.5). В линуксе - не знаю.

Автор: 3,14 25.4.2005, 14:20
Проверить под Linux : echo $JAVA_HOME,
Установить если не изменяет память :
либо так export JAVA_HOME=/usr/local/java
либо так setenv JAVA_HOME /usr/local/java
В зависимости от shell-а

Автор: Guest 25.4.2005, 19:09
ребята вё получилось.

а нельзя как-гибудь автоматизировать, чтобы мне не преходилось к каждому сервлету создовать XML файл, т.е. есть етот плагин(Sysdeo) или какой-нибудь другой автоматически создовал это файл?



Зарания благодарен.

Автор: batigoal 25.4.2005, 19:13
Честно говря, я вообще не понял, при чем тут плагин. Такой код, как у тебя в первом посте не требует ни IDE, ни плагина.
Какой XML файл ты имеешь в виду? Web.xml? Он создается не для сервлета, а для web-приложения.

Автор: Guest 25.4.2005, 20:14
я тут нашёл статейку http://www.keyboardsamurais.de/mt/archives/000053.html

и в ней написано, что после того как я стартую TomCat чтобы я смог увидеть мой сервелет в работе по адрессу
Код

http://localhost:8080/HelloWorld/hello
,
то мне нужно создать файл web.xml

А в какойто другой статье(я щас не могу её найти, я читал что так как мы используем Плагин Sysdeo , не надо писать это web.xml файл, а что мол плугин делает всё за нас.

Так вот можно ли как-нибудь это автомотизироват?

или я не правельно понял из второй статьи?

Автор: batigoal 25.4.2005, 21:42
Web.xml описывает работу твоего приложения и нужен для настройки сервера. В том числе, он описывает все сервлеты входящие в твое приложение. В принципе, когда ты выбираешь в IDE пункт "Создать сервлет", он автоматически добавляется в web.xml, но можно это сделать и вручную, абсолютно ничего сложного.
Плагин навряд ли для этого нужен, это должно входить в базовые функции IDE.
Domestic Cat давал где-то ссылку с подробным описанием формата файла Web.xml, но это было довольно давно, так не вспомнить.
Добавлено @ 21:48
По твоей ссылке тоже все расписано верно:
Код

<!DOCTYPE web-app PUBLIC
  '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN'
  'http://java.sun.com/dtd/web-app_2_3.dtd'>
<web-app>
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>HelloServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>


Указываем, что у нас есть сервлет hello, которые реализуется классом HelloServlet. Потом ассоциируем сервлет helloс адресом /hello.

Автор: StandartenFuhrer 2.4.2007, 21:06
пардон за ламерский вопрос... но у меня в еклипсе 3,2и 6 томкате пунктика сервлет нету...токо просто томкат прожект...  я запарился с созданием и запуском вашего хелоуворлд  smile 

Автор: superVad 3.4.2007, 10:12
Установи WTP плагин для эклипса, или скачай эклипс с уже установленым WTP. Я вот в нем пока пишу и горя не знаю.

Автор: v2v 25.7.2007, 09:47
Цитата(superVad @ 3.4.2007,  10:12)
Установи WTP плагин для эклипса, или скачай эклипс с уже установленым WTP. Я вот в нем пока пишу и горя не знаю.

установил.
но никак не получается создать простой сервлет в нём.
Создал проект : DinamicWebProject ,  в нём создал новый сервлет, заполнил метод doGet() .. 
Далее добавил в список серверов свой Томкат 6.0.13 , через опцию Add / Remove Project добавил на сервер свой проект.
Дальше пытаюсь свой сервлет Run AS - > Run on Server.
В итоге в броузере сообщение об ошибке:
Код

HTTP Status 404 - /TestWTP/servlet/mypackage.SimpleServlet
type Status report
message /TestWTP/servlet/mypackage.SimpleServlet
description The requested resource (/TestWTP/servlet/mypackage.SimpleServlet) is not available.
Apache Tomcat/6.0.13

что я делаю не так?  

Автор: Aazmandius 25.7.2007, 10:28
не нужно указывать полное имя класса сервлета при его вызове из браузера, ты его указываешь при маппинге в web.xml, а обращаешься потом уже к нему по тому имени, которое указано в web.xml как servlet-name, посмотри любой доступный пример, это все стандартные действия

Автор: v2v 25.7.2007, 10:39
вот мой web.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>WebProject</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>SimpleServlet</display-name>
    <servlet-name>SimpleServlet</servlet-name>
    <servlet-class>mypackage.SimpleServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>SimpleServlet</servlet-name>
    <url-pattern>/SimpleServlet</url-pattern>
    <url-pattern>/ss</url-pattern>
  </servlet-mapping>
</web-app>

я уже перепробвал все допустимые вызовы, но боюсь не в этоп проблема.

кстате статические странички и jsp страници работают на Ура...а сервлет не пашет (

Добавлено через 3 минуты и 13 секунд
ага !! ... получилось 

http://localhost:8080/WebProject/SimpleServlet

а куда девалося стандартное 

http://localhost:8080/WebProject/servlet/mypackage.SimpleServlet

причём этот второй урл  сам генерировался, когда я нажимал Run As - > Tomcat Server

Автор: Maksym 25.7.2007, 10:54
Цитата(v2v @  25.7.2007,  10:39 Найти цитируемый пост)
а куда девалося стандартное 

http://localhost:8080/WebProject/servlet/mypackage.SimpleServlet

причём этот второй урл  сам генерировался, когда я нажимал Run As - > Tomcat Server 

Видимо ты делал  Run As в Pachage Explorer не на всем проекте а на файле сервлета..

Автор: v2v 25.7.2007, 11:13
Но всё же... почему тогда Томкатовые примеры, которые идут с серваком строятся через УРЛ:
http://localhost:8080/examples/servlets/servlet/HelloWorldExample
??

Автор: AlexeyVorotnikov 25.7.2007, 11:55
Eclipse, когда запускает Tomcat из-под себя,  запрещает обращение к сервлетам по именам классов.

Добавлено через 3 минуты и 54 секунды
Хотя, посмотрел сейчас на конфиги Tomcat'а, в версии 5.5 такой мапинг отключён по дефолту, а в версии 4.1 -- включён.

Автор: YuG 25.7.2007, 12:27
Цитата(v2v @  25.7.2007,  10:39 Найти цитируемый пост)
ага !! ... получилось 

http://localhost:8080/WebProject/SimpleServlet

а куда девалося стандартное 

http://localhost:8080/WebProject/servlet/mypackage.SimpleServlet

вот сюда:
<url-pattern>/SimpleServlet</url-pattern>

Автор: Maksym 25.7.2007, 12:29
Цитата(v2v @  25.7.2007,  11:13 Найти цитируемый пост)
http://localhost:8080/examples/servlets/servlet/HelloWorldExample

Это просто путь к страничке внутри их структуры каталогов с примерами, которая задеплоена на сервер. Она не имеет отношения к пакетам классов, мапингу и т.п.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)