When trying to deploy to tomcat, Caused by: java.lang.NoSuchFieldError: NULL

后端 未结 1 1235
情歌与酒
情歌与酒 2020-12-10 20:23

Dao-hbm.xml:

    


        
相关标签:
1条回答
  • 2020-12-10 20:51

    You are mixing Spring versions and you are mixing Spring Security Versions (3.1.3 and 3.1.4), Spring Security 3.1 has a dependency on Spring 3.0 whereas you are trying to use 3.1. Spring WS 2.1 depends on Spring 3.2... So you have a whole mixture going on.

    I would suggest upgrading to Spring 3.2.4 (the latest version) and use a properties element to determine the version instead of specifing it for each dependency. Next to that I also suggest using <dependencyManagement /> tag to force dependencies on a certain version. And finally (or maybe firstly) I suggest the use of the maven-enforcer-plugin with a dependency convergence rule, this will break the build if there are conflicting versions of certain dependencies.

    Enforcer plugin

    <build>
       <plugins>
           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>1.3.1</version>
                <executions>
                    <execution>
                        <id>enforce-banned-dependencies</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <DependencyConvergence/>
                                <bannedDependencies>
                                    <searchTransitive>true</searchTransitive>
                                    <excludes>
                                        <exclude>commons-logging:commons-logging</exclude>
                                        <exclude>org.slf4j:slf4j-simple</exclude>
                                    </excludes>
                                </bannedDependencies>
                            </rules>
                            <fail>true</fail>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>    
    </build>
    

    Use Properties

    <properties>
        <spring-framework.version>3.2.4.RELEASE</spring-framework.version>
        <spring-security.version>3.1.4.RELEASE</spring-security.version>
        <spring-ws.version>2.1.3.RELEASE</spring-ws.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.security<groupId>
            <artifactId>spring-security-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security<groupId>
            <artifactId>spring-security-config</artifactId>
        </dependency>
    </dependencies>
    <!-- Other dependencies go here -->
    

    Use Dependency Management

    <dependencyManagement>
        <dependencies>
            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring-framework.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jms</artifactId>
                <version>${spring-framework.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-oxm</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <!-- Spring Security -->
        <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring-security.version}</version>
        </dependency>
        <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring-security.version}</version>
        </dependency>
            <!-- Spring WS -->
            <dependency>
                <groupId>org.springframework.ws</groupId>
                <artifactId>spring-ws-core</artifactId>
                <version>${spring-ws.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.ws</groupId>
                <artifactId>spring-ws-support</artifactId>
                <version>${spring-ws.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    

    When you use this you can ommit the version number in de <dependencies /> section.

    This xml excludes commons-logging because we don't use that we use SLF4J with the jcl-over-slf4j wrapper jar. If you want to use commons-logging simply remove the exclusions and rule from the enforcer plugin.

    0 讨论(0)
自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题