首先是第一件事:)
我知道标题似乎很容易回答。也许这对你们中的一个人来说,但我完全失去了......
问题
我在Tomcat6中运行了一个Web应用程序。这个webapp是一个有趣的新站点混合,用MVC和许多遗留 JSP站点实现。后者并没有提供关于OOP,设计模式,可维护性或可重用性的内容,而且都是过时的重写。也就是说,他们仍在工作,他们仍然在使用。
所以我得到的错误是JSP编译错误:
无法为JSP编译类:生成的java文件中的第12行发生错误无法解析import de.semaino.damex.utils jsp文件中第22行:22错误:/ jsp / include /header.jsp EcatBundle无法解析为类型
似乎无法解析整个de.semaino.damex.utils
包。有问题的JSP从这样开始:
1<%@ page import="java.util.*" %>
2<%@ page import="java.sql.*" %>
3<%@ page import="java.io.FileInputStream" %>
4<%@ page import="de.semaino.damex.*"%>
5<%@ page import="de.semaino.damex.utils.EcatBundle"%>
6<%@ page import="de.semaino.damex.system.SystemParameters"%>
7<%@ page import="de.semaino.damex.system.HelpSystem"%>
8
9<%
10 String langua2 = "0";
11 String speech = request.getParameter("speech");
12 if (speech == null) { speech = "nix"; }
13 if ( speech.equals("de") ) { langua2="de"; }
14 if ( speech.equals("en") ) { langua2="en"; }
15 if ( speech.equals("nl") ) { langua2="nl"; }
16 if (! langua2.equals("0")) {
17 request.getSession().setAttribute("org.apache.struts.action.LOCALE", new Locale(langua2,""));
18 PropertyResourceBundle bundle = new PropertyResourceBundle(new FileInputStream(
19 application.getRealPath("/") + "WEB-INF/classes/ApplicationResources_" + langua2 + ".properties"));
20 EcatBundle eBundle = new EcatBundle(bundle);
21
22 request.getSession().setAttribute("bundle", eBundle);
23 }
第12和24行相当于本引文中的5和20。代码没有改变,只是格式化。
我的WEB-INF/classes
文件夹如下所示:
WEB-INF/
classes/
de/
semaino/
damex/
utils/
EcatBundle.class
这应该是所需的文件夹结构。
关于它的奇怪之处
我的页面已经被重写,并且他们正在使用完全相同的导入而没有任何问题。可以解析包,并使用与上面几乎相同的代码实例化类。只有这次是在编译的java类中。
到目前为止我做了什么
由于真正的 java类可以使用导入就好了,我认为类本身不是问题。
首先我从页面中删除了import指令和类,如下所示:
1<%@ page import="java.util.*" %>
2<%@ page import="java.sql.*" %>
3<%@ page import="java.io.FileInputStream" %>
4<%@ page import="de.semaino.damex.*"%>
5
6<%@ page import="de.semaino.damex.system.SystemParameters"%>
7<%@ page import="de.semaino.damex.system.HelpSystem"%>
...
18 PropertyResourceBundle bundle = new PropertyResourceBundle(new FileInputStream(
19 application.getRealPath("/") + "WEB-INF/classes/ApplicationResources_" + langua2 + ".properties"));
20
21
22 request.getSession().setAttribute("bundle", bundle);
...
在这些更改后,页面再次呈现正常,这意味着其他导入正在运行。那么utils
包呢?
我将类移动到另一个包(在Eclipse中使用Refactor - &gt; move)并更改了JSP中的import指令。重新编译并重新部署整个应用程序后,它工作了...现在抛出错误的页面呈现正确。但这对我来说并不是一个令人满意的解决方案,所以我把它移回去了,错误又回来了。
我也尝试重命名整个软件包(也在Eclipse中使用Refactor - &gt;重命名)并重新部署,但这次没有任何效果。
我尝试了其他一些没有帮助的事情,比如重新安装Tomcat,检查Tomcats Java Path,在另一台机器上部署war文件,在eclipse和Jenkins中构建war文件并部署它在其他机器上。结果都是一样的。
这种行为对我没有意义。我从未在这样一个奇怪的星座中看到过那个错误。
问题 简单明了:有什么想法吗?
或者我可以回答哪些问题来帮助您? ;)
答案 0 :(得分:0)
应该有一个名为&#34; utils&#34;的类。在de.samino.damex包中破坏了派对。