意外的碧玉异常

时间:2013-02-15 06:31:22

标签: java jsp jasper-reports jspinclude

我正在使用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上时,我意识到它是公认的,因为我得到了该类的正确文档。请看下面的屏幕截图: - on hovering over the class name in the jsp file

现在当我部署上面的页面并在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生成相应的类文件,如下所示: class file is actually present in the generated war file

1 个答案:

答案 0 :(得分:3)

错误消息说明了一切,屏幕截图确认:这样的类在正确的路径中不存在。

问题很微妙:导入com.ems.billGen.util.DynamicCombo,类的路径为com/ems/billgen/util/DynamicCombo.class(注意包名中的大写字母G,路径名中缺少大写字母G)。

可能这是某些工具的错误。该错误是由命名不符合Java约定(never to use capital letters in package names)的事实引发的。