SSH项目在服务器启动时无法加载部分action类

frol2c 2017-12-21 10:57:18
开发工具 idea 2017.3 项目环境:spring4.3.12+struts2.3.24+hibernate5.2.12+tomcat7.0.52 jdk=8
问题描述:服务器启动时控制台报如下错误:
2017-12-21 10:31:23,674 10447 [on(3)-127.0.0.1] ERROR util.finder.DefaultClassFinder - Unable to read class [com.<公司名>.ServerWeb.action.sysadmin.DeptAction]
java.lang.ArrayIndexOutOfBoundsException: 512
at org.objectweb.asm.ClassReader.readClass(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at com.opensymphony.xwork2.util.finder.DefaultClassFinder.readClassDef(DefaultClassFinder.java:473)
at com.opensymphony.xwork2.util.finder.DefaultClassFinder.<init>(DefaultClassFinder.java:96)
at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildClassFinder(PackageBasedActionConfigBuilder.java:416)
at org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:397)
at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:354)
at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:274)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:967)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:435)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:479)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4809)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5485)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1740)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

似乎问题在部署时就出现了但是项目仍能部署,打开后访问对应的这个入口后控制台会报错如下:
There is no Action mapped for namespace [/sysadmin] and action name [moduleAction_list] associated with context path [/CILCPS]. - [unknown location]

com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:554)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:178)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)

似乎是struts2的配置问题 但是百思不得其解,附上我的struts.xml配置:

最离谱的是:同一个目录下共有4个action,其中三个报错另外一个正常。其他目录也有action报错

初次发帖求助,希望大神指点。


...全文
296 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
键圣 2017-12-23
  • 打赏
  • 举报
回复
引用 5 楼 frol2c 的回复:
[quote=引用 2 楼 jiaotuwoaini 的回复:] 看一下是不是文件损坏
你指的是哪个文件损坏?[/quote] 你把工程clean下重新打包试试
frol2c 2017-12-21
  • 打赏
  • 举报
回复
补上xml配置:
frol2c 2017-12-21
  • 打赏
  • 举报
回复
引用 2 楼 jiaotuwoaini 的回复:
看一下是不是文件损坏
你指的是哪个文件损坏?
frol2c 2017-12-21
  • 打赏
  • 举报
回复
引用 3 楼 long_539437 的回复:
import com.<公司名>.Entity.User; 文件结构目录<公司名>这个包名换成英文的试试
这个本来就是英文名,为了保密才在帖子里这么写的。
  • 打赏
  • 举报
回复
import com.<公司名>.Entity.User; 文件结构目录<公司名>这个包名换成英文的试试
键圣 2017-12-21
  • 打赏
  • 举报
回复
看一下是不是文件损坏
frol2c 2017-12-21
  • 打赏
  • 举报
回复
struts.xml如下:

另附上我的报错的action之一:
package com.cernet.ServerWeb.action.sysadmin;


import java.util.List;


import com.<公司名>.Entity.Dept;
import com.<公司名>.ServerService.Interfaces.iDeptService;
import com.<公司名>.ServerWeb.action.BaseAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;

import com.opensymphony.xwork2.ModelDriven;

import com.<公司名>.utils.Page;

@Namespace("/sysadmin")
public class DeptAction extends BaseAction implements ModelDriven<Dept> {

private Dept deptModel = new Dept();

public Dept getModel() {
return deptModel;
}

@Autowired
private iDeptService deptService; //aop注入

private Page page = new Page();

public Page getPage() {
return page;
}

public void setPage(Page page) {
this.page = page;
}


@Action(value = "deptAction_list", results = @Result(location =
"/WEB-INF/pages/sysadmin/dept/jDeptList.jsp"))
public String list() {
PageRequest pageable = new PageRequest(page.getPageNo() - 1, page.getPageSize());
Specification<Dept> deptSpecification = (root, query, cb) -> cb.equal(root.get("state").as(Integer.class), 1);
org.springframework.data.domain.Page<Dept> page2 = deptService.findPage(deptSpecification, pageable);
super.copyPage(page, page2);
page.setUrl("deptAction_list");
super.push(page);
// super.put("deptList",deptService.find(deptSpecification));
return "success";
}


@Action(value = "deptAction_toview", results = @Result(location = "/WEB-INF/pages/sysadmin/dept/jDeptView.jsp"))
public String toView() {
String id = deptModel.getId();
super.push(deptService.get(id));
return "success";
}

@Action(value = "deptAction_tocreate", results = @Result(location = "/WEB-INF/pages/sysadmin/dept/jDeptCreate.jsp"))
public String toCreate() {
Specification<Dept> spec = (root, query, cb) -> cb.equal(root.get("state").as(Integer.class), 1);
super.put("list", deptService.find(spec));
return "success";
}

@Action(value = "deptAction_insert", results = @Result(type = "redirect", location = "deptAction_list"))
public String insert() {
deptService.saveOrUpdate(deptModel);
return "success";
}

@Action(value = "deptAction_toupdate", results = @Result(location = "/WEB-INF/pages/sysadmin/dept/jDeptUpdate.jsp"))
public String toUpdate() {
Dept dept = deptService.get(deptModel.getId());
super.push(dept);
Specification<Dept> spec = (root, query, cb) -> cb.equal(root.get("state").as(Integer.class), 1);
List<Dept> list = deptService.find(spec);
list.remove(dept);
super.put("deptList", list);
return "success";
}

@Action(value = "deptAction_update", results = @Result(type = "redirect", location = "deptAction_list"))
public String update() {
Dept dept = deptService.get(deptModel.getId());
dept.setDeptName(deptModel.getDeptName());
dept.setParent(deptModel.getParent());
deptService.saveOrUpdate(dept);
return "success";
}

@Action(value = "deptAction_delete", results = @Result(type = "redirect", location = "deptAction_list"))
public String delete() {
String[] ids = deptModel.getId().split(", ");
deptService.delete(ids);
return "success";
}

}

----------------------------------------------------它继承的BaseAction如下------------------------------------
package com.<公司名>.ServerWeb.action;

import java.util.Map;

import com.<公司名>.Entity.User;
import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import com.<公司名>.utils.Page;

import static com.<公司名>.utils.SysConstant.*;


@Controller
@ParentPackage("default")
@Scope("prototype")
public class BaseAction extends ActionSupport implements RequestAware, SessionAware, ApplicationAware{

private static Logger log = Logger.getLogger(BaseAction.class);


protected Map<String, Object> request;
protected Map<String, Object> session;
protected Map<String, Object> application;

public Map<String, Object> getRequest() {
return request;
}

public Map<String, Object> getSession() {
return session;
}

public Map<String, Object> getApplication() {
return application;
}

@Override
public void setRequest(Map<String, Object> request) {
this.request = request;
}

@Override
public void setSession(Map<String, Object> session) {
this.session = session;
}

@Override
public void setApplication(Map<String, Object> application) {
this.application = application;
}

/**
*
* 将一个对象放入栈顶
*/
public void push(Object obj){
ActionContext.getContext().getValueStack().push(obj);
}

/**
* 放集合放入值栈中 context区域
*/
public void put(String key,Object value){
ActionContext.getContext().put(key, value);
}


public void copyPage(Page page,org.springframework.data.domain.Page page2){
// 设置每页显示的数据
page.setResults(page2.getContent());
// 设置总页数
page.setTotalPage(page2.getTotalPages());
// 设置总记录数
page.setTotalRecord(page2.getTotalElements());
}

public User getCurUser(){
return (User)session.get(CURRENT_USER_INFO);
}
}














81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧