包/类无法解析为类型

时间:2015-08-27 20:21:43

标签: java jsp tomcat

首先是第一件事:)

我知道标题似乎很容易回答。也许这对你们中的一个人来说,但我完全失去了......

问题

我在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文件并部署它在其他机器上。结果都是一样的。

这种行为对我没有意义。我从未在这样一个奇怪的星座中看到过那个错误。

问题 简单明了:有什么想法吗?

或者我可以回答哪些问题来帮助您? ;)

1 个答案:

答案 0 :(得分:0)

应该有一个名为&#34; utils&#34;的类。在de.samino.damex包中破坏了派对。