部署新版Java EE Web应用程序时的java.lang.VerifyError

时间:2013-06-24 09:06:29

标签: spring maven equals java-7 maven-glassfish-plugin

我修改了当前Web项目中的一些代码以添加Spring事务管理。当我在Eclipse中部署它时,甚至当我在工作区中调用“Maven clean”和“Maven install”时,一切正常。但是,当我的持续集成服务器(jenkins)尝试在我的远程服务器上重新部署它时,我得到一个java.lang.VerifyError并且它失败了:

maven-glassfish-plugin:2.1:deploy (default-cli) @ myApp --- [INFO] asadmin --host localhost --port 4848 --user admin --passwordfile C:\Windows\TEMP\mgfp2047875868831547735.tmp --interactive=false --echo=true --terse=true deploy --name myApp --force=false --precompilejsp=false --verify=false --enabled=true --generatermistubs=false --availabilityenabled=false --keepreposdir=false --keepfailedstubs=false --logReportedErrors=true --upload=false --help=false C:\.jenkins\workspace\First_deploy\target\myApp-0.0.1.war
[ERROR] com.sun.enterprise.admin.cli.CommandException: remote failure: Exception while loading the app : java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'analysisDAO': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': Post-processing of the FactoryBean's object failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.methodSecurityMetadataSourceAdvisor': Cannot resolve reference to bean 'org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource#0' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource#0': Cannot create inner bean '(inner bean)' of type [org.springframework.security.access.prepost.PrePostAnnotationSecurityMetadataSource] while setting constructor argument with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)': Cannot create inner bean '(inner bean)' of type [org.springframework.security.access.expression.method.ExpressionBasedAnnotationAttributeFactory] while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)': Cannot resolve reference to bean 'expressionHandler' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'expressionHandler' defined in ServletContext resource [/WEB-INF/spring/security-config.xml]: Cannot resolve reference to bean 'projectPermissionEvaluator' while setting bean property 'permissionEvaluator'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'projectPermissionEvaluator': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: public fr.services.interfaces.IProjectService fr.services.security.ProjectPermissionEvaluator.projectService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'projectService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: public fr.services.interfaces.IProjectRightsService fr.services.impl.ProjectService.projectRightService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'projectRightService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: public fr.dao.IDAOFactory fr.services.impl.ProjectRightService.daoFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myAppDAOFactory': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'agriculturalToolDao' defined in ServletContext resource [/WEB-INF/spring/applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.VerifyError: Expecting a stackmap frame at branch target 43 in method fr.model.application.Projet.equals(Ljava/lang/Object;)Z at offset 4

我使用的是jdk1.7(我在我的服务器上检查过,它仍然是环境变量中的正确JDK),maven和Glassfish。这是我的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>means</groupId>
    <artifactId>means</artifactId>
    <version>0.0.1</version>
    <packaging>war</packaging>
    <profiles>
        <profile>
            <id>mavenplugin-server</id>
            <activation>
                <property>
                    <name>environment</name>
                    <value>server</value>
                </property>
            </activation>
            <properties>
                <glassfish.home>C:\MEANS\Glassfish\glassfish</glassfish.home>
                <glassfish.adminPort>4848</glassfish.adminPort>
                <glassfish.httpPort>8080</glassfish.httpPort>
                <glassfish.httpsPort>8443</glassfish.httpsPort>
            </properties>
        </profile>
        <profile>
            <id>mavenplugin-server-production</id>
            <activation>
                <property>
                    <name>environment</name>
                    <value>server-production</value>
                </property>
            </activation>
            <properties>
                <glassfish.home>C:\MEANS\Glassfish\glassfish</glassfish.home>
                <glassfish.adminPort>4949</glassfish.adminPort>
                <glassfish.httpPort>8282</glassfish.httpPort>
                <glassfish.httpsPort>8553</glassfish.httpsPort>
            </properties>
        </profile>
        <profile>
            <id>mavenplugin-local</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <glassfish.home>C:\MEANS\Glassfish\glassfish</glassfish.home>
                <glassfish.adminPort>4848</glassfish.adminPort>
                <glassfish.httpPort>8080</glassfish.httpPort>
                <glassfish.httpsPort>8443</glassfish.httpsPort>
            </properties>
        </profile>
    </profiles>
    <properties>
        <org.springframework.version>3.0.5.RELEASE</org.springframework.version>
        <eclipselink.version>2.4.0</eclipselink.version>
    </properties>
    <repositories>
        <repository>
            <id>EclipseLink Repo</id>
            <url>http://download.eclipse.org/rt/eclipselink/maven.repo</url>
        </repository>
        <repository>
            <id>com.springsource.repository.bundles.release</id>
            <name>EBR Spring Release Repository</name>
            <url>http:// repository.springsource.com/maven/bundles/release</url>
        </repository>
        <repository>
            <id>com.springsource.repository.bundles.external</id>
            <name>EBR External Release Repository</name>
            <url>http:// repository.springsource.com/maven/bundles/external</url>
        </repository>
    </repositories>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <outputDirectory>build2</outputDirectory>
        <testSourceDirectory>src/test</testSourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <webXml>${basedir}\WebContent\WEB-INF\web.xml</webXml>
                    <warSourceExcludes>${basedir}\WebContent\*</warSourceExcludes>
                    <resource>
                        <excludes>
                            <directory>${basedir}/WebContent</directory>
                            <exclude>**/*.java</exclude>
                        </excludes>
                    </resource>
                    <webResources>
                        <resource>
                            <directory>${basedir}\src\fr</directory>
                            <targetPath>WEB-INF\classes\fr</targetPath>
                            <excludes>
                                <exclude>**/*.java</exclude>
                            </excludes>
                        </resource>
                        <resource>
                            <directory>${basedir}\build2\fr</directory>
                            <targetPath>WEB-INF\classes\fr</targetPath>
                        </resource>
                        <resource>
                            <directory>${basedir}/WebContent/WEB-INF/</directory>
                            <targetPath>WEB-INF/</targetPath>
                            <includes>
                                <include>dispatcher-servlet.xml</include>
                            </includes>
                            <excludes>
                                <exclude>log4j.properties</exclude>
                            </excludes>
                        </resource>
                        <resource>
                            <directory>${basedir}/WebContent/WEB-INF/</directory>
                            <targetPath>WEB-INF/</targetPath>
                            <includes>
                                <include>dispatcher-servlet.xml</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>${basedir}/WebContent/WEB-INF/</directory>
                            <targetPath>WEB-INF/classes/</targetPath>
                            <includes>
                                <include>log4j.properties</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>${basedir}/src/META-INF</directory>
                            <targetPath>WEB-INF/classes/META-INF/</targetPath>
                            <includes>
                                <include>persistence.xml</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>${basedir}/WebContent/</directory>
                            <targetPath></targetPath>
                        </resource>
                    </webResources>

                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.1</version>
                <configuration> 
                    <argLine>-XX:-UseSplitVerifier</argLine>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.glassfish.maven.plugin</groupId>
                <artifactId>maven-glassfish-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <user>admin</user>
                    <echo>true</echo>
                    <adminPassword>means2012!</adminPassword>
                    <glassfishDirectory>${glassfish.home}</glassfishDirectory>
                    <components>
                        <component>
                            <name>${project.artifactId}</name>
                            <artifact>${project.build.directory}/${project.build.finalName}.war</artifact>
                        </component>
                    </components>
                    <domain>
                        <name>${project.artifactId}</name>
                        <adminPort>${glassfish.adminPort}</adminPort>
                        <httpPort>${glassfish.httpPort}</httpPort>
                        <httpsPort>${glassfish.httpsPort}</httpsPort>
                    </domain>
                </configuration>
            </plugin>

        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.15</version>
            <scope>compile</scope>
              <exclusions>
                <exclusion>
                  <groupId>javax.mail</groupId>
                  <artifactId>mail</artifactId>
                </exclusion>
                <exclusion>
                  <groupId>javax.jms</groupId>
                  <artifactId>jms</artifactId>
                </exclusion>
                <exclusion>
                  <groupId>com.sun.jdmk</groupId>
                  <artifactId>jmxtools</artifactId>
                </exclusion>
                <exclusion>
                  <groupId>com.sun.jmx</groupId>
                  <artifactId>jmxri</artifactId>
                </exclusion>
              </exclusions>
  </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.6.11</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.11</version>
        </dependency>

        <!-- <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>1.6.2</version>
        </dependency>
         -->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>${eclipselink.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.core</artifactId>
            <version>${eclipselink.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa</artifactId>
            <version>${eclipselink.version}</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa.modelgen</artifactId>
            <version>${eclipselink.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.moxy</artifactId>
            <version>${eclipselink.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.sdo</artifactId>
            <version>${eclipselink.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.oracle</artifactId>
            <version>${eclipselink.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <!-- <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-asm</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
         -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Alpha1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>maven-glassfish-plugin</artifactId>
            <version>1.0-alpha-4</version>
            <type>maven-plugin</type>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>3.1.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-aspects</artifactId>
            <version>3.1.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>3.1.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>3.1.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
            <version>3.1.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>net.sf.opencsv</groupId>
            <artifactId>opencsv</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3</version>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.2</version>
        </dependency>
    </dependencies>
</project>

我尝试添加maven-surefire-plugin,如帖子所示:How do I get unit test to run in java 7: java.lang.VerifyError: Expecting a stackmap frame at branch target但没有成功......因为我不是专家,所以很难找出我的错误配置所以任何帮助将不胜感激!提前致谢

5 个答案:

答案 0 :(得分:0)

从我在堆栈跟踪中看到的情况来看,我相信应用程序无法连接到数据库或LDAP。这导致其中一个bean的自动装配失败,然后级联到其他bean中。

确保应用程序可以正确连接到bean所需的任何外部资源。

答案 1 :(得分:0)

AFAIK,AspectJ仅支持1.7版及更高版本的Java 7。

您可以尝试将AspectJ版本从1.6.11升级到1.7.3(这是最新的版本)。

答案 2 :(得分:0)

我发现你的问题正在搜索与openCSV 2.3和Java 7相关的异常。在我的例子中,当通过反射实例化一个引用opencsv类的类时抛出了异常。也许你有类似的问题。我决定将我切换到jcsv

答案 3 :(得分:0)

为了防止某天有人帮助某人,我解决了这个问题,现在我的应用程序的所有内容都再次运行... 问题来自glassfish安装,所以它与我的代码无关(即使这个奇怪的“VerrifyError”指出了一些代码行)。我发现,如果我将它部署在另一条玻璃鱼上,那么我就重新安装了我的Glassfish服务器,我的问题就解决了!太糟糕了,我花了一个多星期的时间......谢谢你的帮助!

答案 4 :(得分:0)

我已经通过将应用程序类加载器更改为“PARENT LAST”来解决此问题。

应用程序 - &gt;企业应用程序 - &gt; --classloader mode = PARENT LAST