Tomcat找不到直接放在classes文件夹下的类

时间:2011-10-06 12:54:41

标签: java jsp

我有以下JSP:

<%@ page import="foo.*" %>
<html>
    <body>
        The page count is:
        <%=Counter.getCount()%>
    </body>
    </html>

我在Counter包中有一个foo类,它存储在:

  

C:\ Apache的Tomcat的6.0.32 \ web应用\神\ WEB-INF \类

容器可以从包foo找到该类。

但是当我尝试直接在\WEB-INF\classes下添加一些其他类文件而不是foo之类的任何特定包时,容器找不到该类。

这是如何引起的?如何解决?

1 个答案:

答案 0 :(得分:9)

默认包中的类对于包本身内部的类是不可见的。只要您想将类导入到包中的另一个类中,必须将该类放入包中。从技术上讲,当编译JSP文件时,容器将自动生成.class文件,该文件本身位于包中。因此,您无法从JSP中的默认包中导入类。

因此,只要您希望能够在任何地方重用类,就必须将其放在具体的包中,而不是放在默认包中。作为练习,自己创建两个类,一个在包内,另一个不在包内。现在,在带有包的那个内部,尝试import并使用没有包的那个。你会发现它是不可能的,代码也不会编译。 servletcontainer在“引擎盖下”遇到完全相同的问题。

另见:


无关具体问题:在JSP文件中编写原始Java代码是poor practice。考虑学习和使用servlets