自己心里現在好惡心,弄了兩個多小時的struts2攔截器的問題竟然是因為我隨意刪除了文件而導致文件沒有自動編譯的原因造成的。
下午自己實現了一個struts2的攔截器,因為實現的接口寫錯了,導致攔截器不執行,后來自己隨意刪除了一個jar包,但是我自己不知道tomcat這樣不能自動編譯,后來代碼的配置文件改了N次
public String intercept(ActionInvocation actioninvocation) throws Exception {
Map session = actioninvocation.getInvocationContext().getSession();
UserDomain user = (UserDomain) session.get("user");
if (user == null) {
return Action.LOGIN;
} else {
Action action = (Action) actioninvocation.getAction();
if (action instanceof UserAware) {
((UserAware)action).setUser(user);
}
return actioninvocation.invoke();
}
}
后來修改了interceptor文件,發現還是不行,試了各種方法,突然看了classes文件,發現沒有編譯,后來查了沒有自動編譯的原因,才想起自己刪除了jar包,而沒有在buildpath中刪除,浪費了這么多時間,就是因為自己的不仔細,希望大家看過這個,能防止以后出現這種問題。最后附上解決自動編譯的方法。
1.如果項目里引了某個不用的jar包,而那個包又被你刪了,就會出現不報錯但怎么也編譯不出來class文件的情況,可以把所有包都刪除,然后一個一個的再引入(需要的),不要一下子把所有包都引入來,沒用的可能會引起不良后果.
2. 想刪掉某個class文件重新生成,刪除class文件后,但classes目錄下的文件夾被其它程序打開,比如Total Commander。此時編譯也不會通過,在problems下可能會提示“con't delete classes ……”。關掉其它程序重新編譯即可。
3.還有種情況是remove掉 JRE System Library,重新導入即可編譯。但是什么原因導致的還不清楚
