如何使用IntelliJ + Maven + Tomcat运行Java 1.7项目,其中包括Java 9模块库?

问题描述

我认为这是一个专家问题。然后我认为这是一个Tomcat问题。现在我认为这是一个IntelliJ问题。

最近,我的Tomcat实例已开始在加载Maven jar时引发异常:

<dependency>
    <groupId>com.github.wnameless.json</groupId>
    <artifactId>json-flattener</artifactId>
    <version>0.9.0</version>
</dependency>

出现模糊错误-2020年9月2日,下午org.apache.catalina.startup.ContextConfig processAnnotationsJar SEVERE:无法处理Jar中的Jar条目[module-info.class]

使用该依赖项的虚拟项目可以在Intellij中很好地构建。以生成的jar为例,将其手动复制到独立的Tomcat实例(例如TOMCAT_HOME / webapp / project.war)似乎可以正常加载。将编译的字节码目标更改为9(最多11个)和最新的9.0.37 tomcat,通过IntelliJ会出现相同的错误

核心问题是我通过intellij使用maven tomcat7插件部署到tomcat主页,无论目标字节码,tomcat版本还是openjdk版本,我都收到有关Java 9模块加载期望的错误

<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>com.company.project</groupId>
    <artifactId>javatest</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
 
    <name>Maven Webapp</name>
 
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
 
    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.github.wnameless.json</groupId>
            <artifactId>json-flattener</artifactId>
            <version>0.9.0</version>
        </dependency>
    </dependencies>
 
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.2.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

如何配置Intellij + Maven以避免在运行Tomcat(针对1.7或1.8目标)时尝试使用module-info.class?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)