【问题标题】:Trying to use struts-jquery-tags but run into multiple exceptions?尝试使用 struts-jquery-tags 但遇到多个异常?
【发布时间】:2014-03-24 01:08:40
【问题描述】:

我打算使用struts-jquery taglib,但应用程序会抛出以下错误。基于this question,我将struts更改为struts2,基于this one我将bean添加到struts.xml文件中,但无济于事。

 <%@ taglib prefix="sj" uri="/struts2-jquery-tags" %>

例外情况

ERROR [CommonsLogger.java:38] Unable to load configuration. - bean - jar:file:/C:/Users/Alex/Projects/Myproject/target/Myproject-1.0/WEB-INF/lib/struts2-jquery-grid-plugin-3.7.0.jar!/struts-plugin.xml:27:152

Caused by: Unable to load bean: type:org.apache.struts2.views.TagLibraryDirectiveProvider class:com.jgeppert.struts2.jquery.grid.views.JqueryGridTagLibrary - bean - jar:file:/C:/Users/Alex/Projects/Myproject/target/Myproject-1.0/WEB-INF/lib/struts2-jquery-grid-plugin-3.7.0.jar!/struts-plugin.xml:27:152

Caused by: java.lang.NoClassDefFoundError: org/apache/struts2/views/TagLibraryDirectiveProvider

Caused by: java.lang.ClassNotFoundException: org.apache.struts2.views.TagLibraryDirectiveProvider
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1761)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1611)
    ... 63 more

SEVERE:   WebModule[]Exception starting filter struts2
java.lang.InstantiationException
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:135)

Caused by: Unable to load configuration. - bean - jar:file:/C:/Users/Alex/Projects/Myproject/target/Myproject-1.0/WEB-INF/lib/struts2-jquery-grid-plugin-3.7.0.jar!/struts-plugin.xml:27:152

Caused by: Unable to load configuration. - bean - jar:file:/C:/Users/Alex/Projects/Myproject/target/Myproject-1.0/WEB-INF/lib/struts2-jquery-grid-plugin-3.7.0.jar!/struts-plugin.xml:27:152

Caused by: Unable to load configuration. - bean - jar:file:/C:/Users/Alex/Projects/Myproject/target/Myproject-1.0/WEB-INF/lib/struts2-jquery-grid-plugin-3.7.0.jar!/struts-plugin.xml:27:152

Caused by: Unable to load configuration. - bean - jar:file:/C:/Users/Alex/Projects/Myproject/target/Myproject-1.0/WEB-INF/lib/struts2-jquery-grid-plugin-3.7.0.jar!/struts-plugin.xml:27:152

Caused by: Unable to load bean: type:org.apache.struts2.views.TagLibraryDirectiveProvider class:com.jgeppert.struts2.jquery.grid.views.JqueryGridTagLibrary - bean - jar:file:/C:/Users/Alex/Projects/Myproject/target/Myproject-1.0/WEB-INF/lib/struts2-jquery-grid-plugin-3.7.0.jar!/struts-plugin.xml:27:152

Caused by: java.lang.NoClassDefFoundError: org/apache/struts2/views/TagLibraryDirectiveProvider

Caused by: java.lang.ClassNotFoundException: org.apache.struts2.views.TagLibraryDirectiveProvider

POM.xml

  <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.3.8</version>
        </dependency>
   <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-convention-plugin</artifactId>
            <version>2.3.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-dojo-plugin</artifactId>
            <version>2.3.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts-taglib</artifactId>
            <version>1.3.10</version>
        </dependency>
   <dependency>
        <groupId>com.jgeppert.struts2.jquery</groupId>
        <artifactId>struts2-jquery-plugin</artifactId>
        <version>3.7.0</version>
    </dependency>
    <dependency>
        <groupId>com.jgeppert.struts2.jquery</groupId>
        <artifactId>struts2-jquery-grid-plugin</artifactId>
        <version>3.7.0</version>
    </dependency>
    <dependency>
        <groupId>com.jgeppert.struts2.jquery</groupId>
        <artifactId>struts2-jquery-richtext-plugin</artifactId>
        <version>3.7.0</version>
    </dependency>
    <dependency>
        <groupId>com.jgeppert.struts2.jquery</groupId>
        <artifactId>struts2-jquery-tree-plugin</artifactId>
        <version>3.7.0</version>
    </dependency>
    <dependency>
        <groupId>com.jgeppert.struts2.jquery</groupId>
        <artifactId>struts2-jquery-mobile-plugin</artifactId>
        <version>3.7.0</version>
    </dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts-annotations</artifactId>
    <version>1.0.5</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
</dependency>
            <dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.20</version>
</dependency>
          <dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity</artifactId>
    <version>1.7</version>
</dependency>

【问题讨论】:

  • 你为什么使用 Struts 1.3 标签库?

标签: java jsp maven struts2 struts2-jquery-plugin


【解决方案1】:

你有依赖问题:

类 TagLibraryDirectiveProvider 存在于 struts2-core jar 中,但在比您声明的 (2.3.8) 更新的版本 (2.3.16) 中: http://struts.apache.org/release/2.3.x/struts2-core/apidocs/org/apache/struts2/views/TagLibraryDirectiveProvider.html

如此简单的升级依赖。

【讨论】:

【解决方案2】:

我可以在 Struts2 2.3.14 上使用 jQuery 插件,我只是删除了应用程序的 Target 目录并使用了以下依赖项。

 <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.3.14</version>
        </dependency>
        <dependency>
            <groupId>com.jgeppert.struts2.jquery</groupId>
            <artifactId>struts2-jquery-plugin</artifactId>
            <version>3.6.1</version>
        </dependency>
             <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>1.7</version>
      </dependency>

【讨论】:

    【解决方案3】:
    /*
     * $Id$
     *
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements.  See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership.  The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License.  You may obtain a copy of the License at
     *
     *  http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing,
     * software distributed under the License is distributed on an
     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     * KIND, either express or implied.  See the License for the
     * specific language governing permissions and limitations
     * under the License.
     */
    
    package org.apache.struts2.views;
    
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.opensymphony.xwork2.util.ValueStack;
    
    /**
     * Provides Velocity implementation classes for a tag library
     */
    public interface TagLibraryDirectiveProvider {
    
        /**
         * Gets a list of Velocity directive classes for the tag library.  Called once on framework
         * startup when initializing Velocity.
         *
         * @return A list of Velocity directive classes
         */
        public List<Class> getDirectiveClasses();
    
    }
    

    还有:

    /*
     * $Id: TagLibrary.java 651946 2008-04-27 13:41:38Z apetrelli $
     *
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements.  See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership.  The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License.  You may obtain a copy of the License at
     *
     *  http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing,
     * software distributed under the License is distributed on an
     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     * KIND, either express or implied.  See the License for the
     * specific language governing permissions and limitations
     * under the License.
     */
    
    package org.apache.struts2.views;
    
    import com.opensymphony.xwork2.util.ValueStack;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Provides Freemarker implementation classes for a tag library
     */
    public interface TagLibraryModelProvider {
    
        /**
         * Gets a Java object that contains getters for the tag library's Freemarker models.
         * Called once per Freemarker template processing.
         *
         * @param stack The current value stack
         * @param req The HTTP request
         * @param res The HTTP response
         * @return The Java object containing the Freemarker model getter methods
         */
        Object getModels(ValueStack stack, HttpServletRequest req, HttpServletResponse res);
    
    }
    

    我编译并将它们添加到我的类文件夹中

    【讨论】:

      猜你喜欢
      • 2011-10-16
      • 1970-01-01
      • 2022-07-15
      • 2023-03-23
      • 2023-03-03
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多