我有以下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
之类的任何特定包时,容器找不到该类。
这是如何引起的?如何解决?
答案 0 :(得分:9)
默认包中的类对于包本身内部的类是不可见的。只要您想将类导入到包中的另一个类中,必须将该类放入包中。从技术上讲,当编译JSP文件时,容器将自动生成.class
文件,该文件本身位于包中。因此,您无法从JSP中的默认包中导入类。
因此,只要您希望能够在任何地方重用类,就必须将其放在具体的包中,而不是放在默认包中。作为练习,自己创建两个类,一个在包内,另一个不在包内。现在,在带有包的那个内部,尝试import
并使用没有包的那个。你会发现它是不可能的,代码也不会编译。 servletcontainer在“引擎盖下”遇到完全相同的问题。
无关具体问题:在JSP文件中编写原始Java代码是poor practice。考虑学习和使用servlets。