Mvn clean install tomcat7:deploy fails with “invalid byte tag in constant pool”

两盒软妹~` 提交于 2019-12-03 22:22:02

I got the following error when I used aspectj-maven-plugin version 1.2 and version 1.6.1 for the aspectj dependencies with java 1.6.

[ERROR] Internal compiler error
org.aspectj.apache.bcel.classfile.ClassFormatException: File: 'java/lang/CharSequence.class': Invalid byte tag in constant pool: 18
    at org.aspectj.apache.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:192)
    at org.aspectj.apache.bcel.classfile.ClassParser.parse(ClassParser.java:131)
    at org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:323)
    at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:277)

To fix this issue, I upgraded aspectj-maven-plugin to version 1.8 and version 1.8.7 for other aspectj dependencies. Here's my pom.xml:

<properties>
    <aspectj.version>1.8.7</aspectj.version>
    <compiler.version>1.6</compiler.version>
</properties>

<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0.2</version>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
        </configuration>
    </plugin>

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <version>1.8</version>
        <configuration>
            <showWeaveInfo>true</showWeaveInfo>
            <source>${compiler.version}</source>
            <target>${compiler.version}</target>
            <Xlint>ignore</Xlint>
            <complianceLevel>${compiler.version}</complianceLevel>
            <encoding>UTF-8</encoding>
            <verbose>false</verbose>
            <aspectLibraries>
                <aspectLibrary>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-aspects</artifactId>
                </aspectLibrary>
            </aspectLibraries>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>compile</goal>
                    <goal>test-compile</goal>
                </goals>
            </execution>
        </executions>
        <dependencies>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjrt</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjtools</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
        </dependencies>
    </plugin>
    ...
</plugins>

<dependencies>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>${aspectj.version}</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>${aspectj.version}</version>
    </dependency>
</dependencies>

I got this error when building a project with Java 8 and AspectJ version 1.6.11, which as it turned out are incompatible.

Solution: Try to downgrade Java compiler to JDK 7 or upgrade AspectJ dependecies to 1.8+

Look for the following artifacts related to AspectJ in your project:

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

The dependencies have conflicts

<dependency>
     <groupId>org.aspectj</groupId>
     <artifactId>aspectjweaver</artifactId>
     <version>${aspectj.version}</version>
</dependency>

and

<dependency>
   <groupId>org.aspectj</groupId>
   <artifactId>aspectjtools</artifactId>
   <version>${aspectj.version}</version>
</dependency>

remove the aspectjweaver dependency and run

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!