Назад | Начало урока | Вперед
Содержание

Глава 1 (продолжение 1)

О переменной classpath и компиляции Java-программ

Пробуем запустить Томкат:

C:\apache-tomcat-5.5.29\bin>catalina.bat

Using CATALINA_BASE: C:\apache-tomcat-5.5.29\
Using CATALINA_HOME: C:\apache-tomcat-5.5.29\
Using CATALINA_TMPDIR: C:\apache-tomcat-5.5.29\\temp
Using JRE_HOME: C:\Program Files\Java\jdk1.6.0_18\
Using CLASSPATH: C:\apache-tomcat-5.5.29\\bin\bootstrap.jar
Usage: catalina ( commands ... )
commands:
debug Start Catalina in a debugger
debug -security Debug Catalina with a security manager
jpda start Start Catalina under JPDA debugger
run Start Catalina in the current window
run -security Start in the current window with security manager
start Start Catalina in a separate window
start -security Start in a separate window with security manager
stop Stop Catalina
version What version of tomcat are you running?

C:\apache-tomcat-5.5.29\bin>

В этом отчете видно почему не запустился Томкат! Ошибка в определении переменной CLASSPATH.

CLASSPATH: C:\apache-tomcat-5.5.29\\bin\bootstrap.jar

Мы видим здесь в пути двойной слеш перед bin. Здесь должен быть одинарный слеш.
Чтобы этой ошибки не было, системные переменные следует задать так:

JAVA_HOME = C:\Program Files\Java\jdk1.6.0_18
CATALINA_HOME = C:\apache-tomcat-5.5.29
path = %JAVA_HOME%bin;%CATALINA_HOME%bin

Затем перезапустить компьютер.

Далее проверим задав адрес в браузере:

http://localhost:8080/
http://127.0.01:8080

Все в порядке. Вышла тестовая страница Томкат!

-------------------------

Далее о переменной classpath и компиляции Java-программ.

Компиляция. Для компиляции сервлетов требуется добавить такой jar в

CLASSPATH "C:\Program Files\Apache Software Foundation\Tomcat5.0\common\lib\servlet-api.jar".

Убедитесь, что у вас действительно этот jar есть. Он может ещё называтся servlet.jar.
Итак, добавили, компилируем файл:

CLASSPATH "C:\apache-tomcat-5.5.29\common\lib\servlet-api.jar".

C:\apache-tomcat-5.5.29\common\lib\servlet-api.jar

-------------------------

Куда отправляется результат
Параметр -d указывает конечную директорию (обычно называемую bin, build или classes):

javac -d classes -classpath "C:\Program Files\Java\jdk1.6.0_18\lib\servlet-api.jar" WelcomeServlet.java

Ура!!! Откомпилировалась!! Class-файл находится в директории classes

javac -d classes -classpath "C:\Program Files\Java\jdk1.6.0_18\lib\servlet-api.jar" TestingServlet.java

Откомпилировалась, но при запуске из каталога classes выходит ошибка:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/H
tpServlet
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
... 12 more
Could not find the main class: WelcomeServlet. Program will exit.

Попробуем запустить из каталога bin:

C:\Program Files\Java\jdk1.6.0_18\bin>java WelcomeServlet

Exception in thread "main" java.lang.NoClassDefFoundError: WelcomeServlet
Caused by: java.lang.ClassNotFoundException: WelcomeServlet
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: WelcomeServlet. Program will exit.

java classes.WelcomeServlet
java WelcomeServlet

javac -d classes -classpath "C:\Program Files\Java\jdk1.6.0_18\lib\servlet-api.jar" WelcomeServlet.java
javac -classpath "C:\Program Files\Java\jdk1.6.0_18\bin\servlet-api.jar" WelcomeServlet.java

javac -d classes -classpath "C:\apache-tomcat-5.5.29\common\lib\servlet-api.jar" WelcomeServlet.java

javac -d "C:\apache-tomcat-5.5.29\webapps\jhtp5\WEB_INF\classes" -classpath "C:\apache-tomcat-5.5.29\common\lib\servlet-api.jar" WelcomeServlet.java
Эта инструкция сработала!

Обратите внимание на параметры -d и -classpath программы javac:

-d "C:\apache-tomcat-5.5.29\webapps\jhtp5\WEB_INF\classes"
-classpath "C:\apache-tomcat-5.5.29\common\lib\servlet-api.jar"

Теперь в указанной параметром -d папке появился класс WelcomeServlet.class.

далее попробуем запустить браузер с прежним адресом:

http://localhost:8080/jhtp5/servlets/WelcomeServlet.html

или так:

http://localhost:8080/jhtp5/welcome1

Еще другой пример прокомпилируем:

javac -d "C:\apache-tomcat-5.5.29\webapps\myapp\WEB_INF\classes" -classpath "C:\apache-tomcat-5.5.29\common\lib\servlet-api.jar" TestingServlet.java
Эта инструкция сработала!

далее попробуем запустить браузер с адресом:

http://localhost:8080/myapp/test

http://localhost:8080/myapp/TestingServlet
http://localhost:8080/myapp/WEB_INF/classes/TestingServlet
http://localhost:8080/myapp/TestingServlet

Выходит ошибка: 404

////////////////////////////
-------------------------

http://localhost:8080/%app name%/test
http://localhost:8080/%myapp%/test

-------------------

Для запуска приложения из гл 10 Дейтел:

Сначала запустим Томкат:
java -jar bootstrap.jar

catalina.bat
startup.bat
shutdown

Затем в браузере введем следующий URL:
http://localhost:8080/jhtp5/servlets/WelcomeServlet.html

Можно запустить то же предложение без использования html-файла так:

http://localhost:8080/jhtp5/welcome1

--------------------------------

http://localhost:8080/%app name%/test

http://localhost:8080/myapp/test


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz