有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么Tomcat/JSP看不到这些类?

我正在尝试在Tomcat 7.0.14上使用JSP和Java编写一个web应用程序,其中一部分涉及使用Hibernate连接MySQL服务器

以下是我的目录结构的基本视图:

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”就是给我带来问题的文件。它看不到各种hibernate jar文件中包含的类。我使用了以下语句:

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

Tomcat告诉我

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

顺便说一句,这不是真的;Session绝对是一种类型,而不是一个包,它就在hibernate3.jar中。更具体地说,它存在于这里:

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

但我想我会打球,然后从org导入所有东西。冬眠,就像这样:

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

更令人困惑的是,Tomcat现在告诉我

Session cannot be resolved to a type.

所以,我有点不知所措。我不确定Tomcat的配置方式是否有问题,或者我的类目录结构是否有问题,或者我是否不了解JAR的工作方式,或者是什么。据我所知,WEB-INF/lib中的JAR文件应该始终位于Tomcat的类路径上,而WEB-INF/classes/some package路径中的那些文件工作正常,所以我迷路了

任何帮助都将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    除了hibernate,WEB-INF/lib中还有其他JAR吗? 我有一个类似的问题:tomcat在WEB-INF/lib中没有看到JAR,但在全局lib目录中的相同文件中工作良好

    在我的例子中,我从WEB-INF/lib中删除了一些未使用的遗留文件,它突然开始工作
    tomcat似乎不会从WEB-INF/lib加载一些文件(例如,它会抱怨任何包含javax.servlet类的文件),并且会默默地忽略其他文件

  2. # 2 楼答案

    Only a type can be imported. XXXXX resolves to a package.
    

    上述情况通常意味着容器无法找到类文件

    您是否可以导入其他JAR或类?我的意思是,调试;创建一个简单的hello world JSP并导入一些自定义类,看看是否可以使用它

    另外,确认会话类确实存在于lib目录中的一个jar中