所以第一件事先:) :)包裝/類不能解析到一個類型
我知道標題似乎很容易回答。也許這將是一個你,但我在這裏時總損失...
的問題
我已經在運行的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文件並將其部署在其他機器上。結果都是一樣的。
這種行爲對我來說沒有意義。我從來沒有在這樣一個奇怪的星座中看到這個錯誤。
問題 簡單和簡單:任何想法?
還有更多問題可以幫助我解答? ;)
好主意:停止使用scriptlets。 –
@LuiggiMendoza是的,我們不再寫它們了,但是我們仍然有它們... – Matze
然後開始刪除它們:) –