开发工具  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报错初次发帖求助,希望大神指点。

解决方案 »

  1.   

    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);
    }
    }
      

  2.   

    import com.<公司名>.Entity.User;
    文件结构目录<公司名>这个包名换成英文的试试
      

  3.   

    补上xml配置:
      

  4.   

    你指的是哪个文件损坏?你把工程clean下重新打包试试