2015-08-27 28 views
4

所以第一件事先:) :)包裝/類不能解析到一個類型

我知道標題似乎很容易回答。也許這將是一個你,但我在這裏時總損失...

的問題

我已經在運行的tomcat6 web應用。這個web應用程序是一個有趣的新網站的混合,這是與MVC的實施和許多傳統 JSP網站實施。後者並沒有提供關於面向對象,設計模式,可維護性或可重用性的一竅不通,而且全都被重寫。也就是說,他們仍然在工作,他們仍在使用。

所以我得到的錯誤是一個JSP編譯錯誤:

Unable to compile class for JSP: An error occurred at line: 12 in the generated java file The import de.semaino.damex.utils cannot be resolved An error occurred at line: 22 in the jsp file: /jsp/include/header.jsp EcatBundle cannot be resolved to a type

似乎整個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類可與進口就好了工作,我想通類本身是沒有問題的。

首先我刪除導入指令,然後從頁面類,它看起來像這樣:

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 - > move)並更改了JSP中的import指令。重新編譯並重新部署整個應用程序後,它已經引發錯誤的頁面現在呈現正確。但這對我來說不是一個令人滿意的解決方案,所以我將它移回原處,並且錯誤又回來了。

我也嘗試重命名整個包(也在Eclipse中與重構 - >重命名)並重新部署,但這次沒有任何影響。

我試圖幾個其他的事情沒有幫助,像重新安裝Tomcat中,檢查雄貓的Java路徑,部署在另一臺機器上的我的戰爭文件,在Eclipse中構建和詹金斯WAR文件並將其部署在其他機器上。結果都是一樣的。

這種行爲對我來說沒有意義。我從來沒有在這樣一個奇怪的星座中看到這個錯誤。

問題 簡單和簡單:任何想法?

還有更多問題可以幫助我解答? ;)

+0

好主意:停止使用scriptlets。 –

+0

@LuiggiMendoza是的,我們不再寫它們了,但是我們仍然有它們... – Matze

+0

然後開始刪除它們:) –

回答

0

應該有一個名爲「utils」的包在de.samino.damex中破壞派對。

+1

是的,正如你在上面的評論中看到的那樣。 ;)但是由於直到現在你還沒有答案,你就贏得了選中標記。 – Matze

相關問題