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

use*_*690 2 java jsp

我有以下JSP:

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

我有一个Counterfoo中的类,存储在:

C:\ Apache的Tomcat的6.0.32 \的webapps \神\ WEB-INF \班

容器可以从包中找到类foo.

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

这是怎么造成的,我该如何解决?

Bal*_*usC 9

默认包中的类对于包本身内的类是不可见的.你必须每当你想将其导入另一类是本身就是一个包里面把类的包装.从技术上讲,当编译JSP文件时,容器将自动生成一个.class文件,该文件本身就在一个包中.因此,您无法从JSP中的默认包中导入类.

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

也可以看看:


具体问题无关:在JSP文件中编写原始Java代码是一种不好的做法.考虑学习和使用servlet.