Почему Tomcat / JSP не может видеть эти классы? - PullRequest
4 голосов
/ 21 июня 2011

Я пытаюсь написать веб-приложение с использованием JSP и Java на Tomcat 7.0.14, и часть этого включает соединение с сервером MySQL с использованием Hibernate .

ВотБазовый вид моей структуры каталогов:

apache-tomcat-7.0.14
|- webapps
   |- ROOT
     |- WEB-INF
     |   |- classes
     |   |   |- some-package-path
     |   |      \- foo.java
     |   |      \- foo.class
     |   |- lib
     |      \- hibernate3.jar
     \- file_giving_issues.jsp

Теперь, file_giving_issues.jsp, как вы уже догадались, это файл, вызывающий у меня проблемы.Он не может видеть классы, содержащиеся в различных файлах jibernate.Я использовал следующее утверждение:

<%@ page import="org.hibernate.Session" %>

Здесь, Tomcat говорит мне,

Only a type can be imported. org.hibernate.Session resolves to a package.

Это, кстати, не так;Сеанс определенно является типом, а не пакетом, и он в этом hibernate3.jar.Точнее, он существует здесь:

WEB-INF/lib/hibernate3.jar/org/hibernate/Session.class

Но я решил, что буду играть в мяч и просто импортировать все из org.hibernate, вот так:

<%@ page import="org.hibernate.*" %>

Еще более удивительно, Tomcatтеперь говорит мне,

Session cannot be resolved to a type.

Итак, я немного растерялся.Я не уверен, что это проблема с тем, как настроен Tomcat, или с моей структурой каталогов классов, или я не понимаю, как работают JAR, или как.Из того, что я понимаю, файлы JAR в WEB-INF / lib всегда должны быть в Classpath Tomcat, а эти файлы в WEB-INF / classes / some-package-path работают нормально, поэтому я потерян.

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 15 июля 2011

Есть ли у вас какие-либо другие JAR-файлы в WEB-INF / lib, кроме hibernate? У меня была похожая проблема: tomcat не видел JAR-файлы в WEB-INF / lib, но отлично работал с теми же файлами в глобальном каталоге lib.

В моем случае я удалил некоторые неиспользуемые устаревшие файлы из WEB-INF / lib, и он неожиданно начал работать.
Кажется, tomcat не будет загружать некоторые файлы из WEB-INF / lib (например, он жалуется на любой файл с классами javax.servlet) и будет игнорировать другие.

0 голосов
/ 22 июня 2011
Only a type can be imported. XXXXX resolves to a package.

Вышеуказанное обычно означает, что контейнер не может найти файл класса.

Вы видите, можете ли вы импортировать другие банки или классы? Я имею в виду, чтобы отладить; создайте простой привет мир JSP и импортируйте некоторые из ваших пользовательских классов и посмотрите, сможете ли вы работать с ним.

Также убедитесь, что класс Session действительно присутствует в одном из jar-файлов в вашем каталоге lib.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...