我正在使用Tomcat6.0,Eclipse SDE 7.0 Express for Web Developers和jdk1.6
在我的jsp页面中,我有一个类似于下面的代码
<%
List<String> options = new ArrayList<String>();
DynamicCombo comboBox = new DynamicCombo();
options = comboBox.generateComboBox();
Collections.sort(options);
int tempVar = 0;
while (tempVar < options.size()) {
out.print("<option value=\"");
out.print(options.get(tempVar));
out.print("\">");
out.print(options.get(tempVar));
out.print("</option>");
tempVar++;
}
%>
DynamicCombo是com.ems.billGen.util包中的一个类,我正在jsp中正确导入这个包: -
<%@page import="com.ems.billGen.util.*" %>
这个类DynamicCombo有一个名为generateComboBox()的方法,它只是创建一个字符串列表并返回该字符串。
当我将鼠标悬停在上面的jsp类DynamicCombo上时,我意识到它是公认的,因为我得到了该类的正确文档。请看下面的屏幕截图: -
现在当我部署上面的页面并在firefox中查看它时,我得到以下jasper异常: -
jsp文件中的第36行:/implementation.jsp
发生错误DynamicCombo cannot be resolved to a type
33: <td><select name="product_list">
34: <%
35: List<String> options = new ArrayList<String>();
36: DynamicCombo co = new DynamicCombo();
37: options = co.generateComboBox();
38: Collections.sort(options);
39: int tempVar = 0;
我无法理解原因,以及如何解决这个问题。任何意见都表示赞赏。
还会在war文件的web-inf文件夹中为DynamicCombo生成相应的类文件,如下所示:
答案 0 :(得分:3)
错误消息说明了一切,屏幕截图确认:这样的类在正确的路径中不存在。
问题很微妙:导入com.ems.billGen.util.DynamicCombo
,类的路径为com/ems/billgen/util/DynamicCombo.class
(注意包名中的大写字母G,路径名中缺少大写字母G)。
可能这是某些工具的错误。该错误是由命名不符合Java约定(never to use capital letters in package names)的事实引发的。