2

Struts2 コードで注釈を使用すると、この問題が発生します。

私の Annotated Action クラスは、インターセプターを使用しているこのようなもので、私のアーキテクチャは Spring 3、Struts 2 に基づいており、Struts2 Convention Plugin を使用しています

@InterceptorRefs({  
    @InterceptorRef("mylogging")  
}) 
public class LoginAction  implements ModelDriven{
    User user = new User();
    List<User> users = new ArrayList<User>();
    UserBo userBo;
    @Action(value="/login",results={@Result(name="success",type="chain",location="/jsp/successPage.jsp"),
            @Result(name="login",type="chain",location="/jsp/userLogin.jsp")})
    public String execute() {
        if(user.getUserScreenName()==null)
            return "login";
        System.out.println(userBo.verifyUser(user));
        return "success";
    }

また、デプロイメント記述子の詳細を同封しようとしています

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
        <init-param> <param-name>config</param-name> <param-value>struts-default.xml,struts-plugin.xml,struts.xml
</param-value>
            </init-param>
      </filter>


      <filter-mapping>

        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
      </filter-mapping>
      <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/resources/config/SpringBeans.xml</param-value>
    </context-param>

       <listener>
        <listener-class>
          org.springframework.web.context.ContextLoaderListener
        </listener-class>

      </listener>

struts.xmlインターセプターと結果タイプを定義するために使用するインターセプターを定義しました

   <struts>
    <constant name="struts.devMode" value="false" />
     <constant name="struts.objectFactory" value="spring" />
     <constant name="struts.convention.package.locators.basePackage" value="com.abc.lab"/>
     <constant name="struts.convention.action.checkImplementsAction" value="false"/>
      <constant name="struts.convention.package.locators" value="action,actions,struts,struts2"/> <package name="default" extends="struts-default" namespace="/">
     <interceptors>
            <interceptor name="mylogging" 
                class="com.abc.lab.interceptor.LoggingInterceptor">
            </interceptor>
            <interceptor-stack name="loggingStack">
                <interceptor-ref name="mylogging" />

                <interceptor-ref name="defaultStack" />    
            </interceptor-stack>
        </interceptors> </package> </struts>

true または falseでも試しましdevModeたが、役に立ちませんでした。

私のディレクトリ構造は

+--LmsWar/
|  +--pom.xml
|  +--src/
|  |  +--com/
|  |  |  +--abc/
|  |  |  |  +--lab/
|  |  |  |  |  +--actions/
|  |  |  |  |  |  +--HomeAction.java
|  |  |  |  |  |  +--LoginAction.java
|  |  |  |  |  +--bo/
|  |  |  |  |  |  +--impl/
|  |  |  |  |  |  |  +--UserBoImpl.java
|  |  |  |  |  |  +--UserBo.java
|  |  |  |  |  +--dao/
|  |  |  |  |  |  +--impl/
|  |  |  |  |  |  |  +--UserDAOImpl.java
|  |  |  |  |  |  +--UserDAO.java
|  |  |  |  |  +--filter/
|  |  |  |  |  +--interceptor/
|  |  |  |  |  |  +--LoggingInterceptor.java
|  |  |  |  |  +--listener/
|  |  |  |  |  +--model/
|  |  +--resources/
|  |  |  +--com/
|  |  |  |  +--abc/
|  |  |  |  |  +--lab/
|  |  |  |  |  |  +--spring/
|  |  |  |  |  |  |  +--UserBean.xml
|  |  |  +--config/
|  |  |  |  +--database/
|  |  |  |  |  +--properties/
|  |  |  |  |  |  +--database.properties
|  |  |  |  +--spring/
|  |  |  |  |  +--DataSource.xml
|  |  |  |  |  +--HibernateSessionFactory.xml
|  |  |  |  +--SpringBeans.xml
|  |  +--struts.properties
|  |  +--struts.xml
|  +--WebRoot/
|  |  +--jsp/
|  |  |  +--common/
|  |  |  +--layout/
|  |  +--WEB-INF/
|  |  |  +--classes/
|  |  |  +--lib/
|  |  |  +--tiles.xml
|  |  |  +--web.xml

編集:

詳細を調べて詳細なログを追加した後、ログにもう 1 つ記録されました。

2013-07-23 16:40:01,578 ERROR com.opensymphony.xwork2.util.finder.ClassFinder.error:38 - Unable to read class [com.abc.lab.actions.LoginAction] java.lang.NoSuchMethodError: org.objectweb.asm.ClassReader.accept(Lorg/objectweb/asm/ClassVisitor;I)V

ここで言及した例外は 1 つだけですが、アプリケーションで使用できる各アクション クラスで同じ例外が発生します。

4

1 に答える 1