我需要将旧项目从Java 6更新到Java 7.整个项目在Java 6上运行正常,但是当我更改为Java 7时,项目的某些部分会给我这个错误:
Unable to instantiate Action, com.xxx.action.domain.CaseAction, defined for '' in namespace '/'Class must not be null
根据this thread,用户说问题是该项目在使用Java 7时使用Java 6编码。
但我更改了所有可能的设置以在Java 7中编译项目,并在Java 7中运行它,并且没有构建错误。该项目大部分都运行正常,只是某些特定页面存在此问题。
是否有任何设置我没有以正确的方式配置?或者我错过了什么?
我正在使用Eclipse和Tomcat 6。
如果您希望我在此处添加任何内容,请告知我们。
更新
struts.xml中
<action name="*_Case" class="com.xxx.action.domain.CaseAction" method="{1}">
<result name="success">CaseList.jsp</result>
<result name="inputAdm">CaseForm.jsp</result>
<result name="inputEduc">CaseForm.jsp</result>
<result name="cancel" type="redirect">list_Case.html</result>
<result name="text">text.jsp</result>
<result name="list" type="redirect">list_Case.html</result>
<result name="filter">CaseTable.jsp</result>
<result name="viewlist">CaseViewList.jsp</result>
<result name="publicViewList">PublicCaseViewList.jsp</result>
<result name="termos">Termos.jsp</result>
<result name="delete">CaseList.jsp</result>
<result name="dicasProjetos">DicasProjetos.jsp</result>
</action>
CaseAction.java
public String publicViewList() {
if(!isNewFiltro()) {
filter = (Filtro)session.get("FILTRO");
if(filter != null && !filter.getClazz().equals(getNew().getClass())) {
filter = null;
}
}
if(filter == null) {
filter = new Filtro<CaseTO>();
}
filter.setActionContext(ActionContext.getContext());
filter.setClazz(getNew().getClass());
buildExample();
((CaseTO)base).setCaseStatus(CaseTO.CASE_STATUS_APROVADO);
((CaseTO)base).setPublicado(Boolean.TRUE);
filter.setExample((CaseTO)base);
filter.setPageSize(Integer.MAX_VALUE);
bases = mgr.getList(filter);
String basesJson = "";
ArrayList<CaseTO> list = new ArrayList<CaseTO>();
try{
for(CaseTO caseTO: (List<CaseTO>)bases){
if(caseTO.getLatitude() != null && caseTO.getLongitude() != null){
if(caseTO.getEducador() != null)
caseTO.getEducador().setEducadorInstituicoes(null);
caseTO.setEducadoresRelacionados(null);
list.add(caseTO);
}
}
Gson g = new Gson();
basesJson = g.toJson(list, list.getClass());
}catch(Exception e){
e.printStackTrace();
}
List<CaseTO> cases1 = bases.size() > 0 ? bases.size() > 2 ? bases.subList(0, 2) : bases.subList(0, bases.size()-1) : new ArrayList<CaseTO>();
List<CaseTO> cases2 = bases.size() > 2 ? bases.subList(2, bases.size()) : new ArrayList<CaseTO>();
ActionContext.getContext().put("casesJson", basesJson);
ActionContext.getContext().put("resultSize", list.size());
ActionContext.getContext().put("cases1", cases1);
ActionContext.getContext().put("cases2", cases2);
return "publicViewList";
}
我把文件的相关部分放在一边,因为它们有点大。
给我的问题的URL是/publicViewList_Case.html
,所以应该执行的方法是publicViewList
,即使它显然在抛出异常之前没有被执行。