【问题标题】:Maven error Cannot access defaults field of PropertiesMaven错误无法访问属性的默认字段
【发布时间】:2021-07-14 01:31:43
【问题描述】:

我使用最新版本的 Java -> 16. 当我运行 mvn clean 时,我得到 Could not initialize class org.apache.maven.plugin.war.util.WebappStructureSerializer 错误。我读到添加 maven-war-plugin 可能是一个解决方案,但它对我不起作用。当我运行 mvn install 时,出现以下错误:

注入构造函数时出错,java.lang.ExceptionInInitializerError: 无法访问属性的默认字段 org.apache.maven.plugin.war.WarMojo.(Unknown Source) while 定位 org.apache.maven.plugin.war.WarMojo

我该如何解决这些问题?它们是由Java版本引起的吗?

<modelVersion>4.0.0</modelVersion>

<groupId>web-programming</groupId>
<artifactId>servlet-demo</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>

<properties>
    <java.version>16</java.version>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <maven.compiler.source>${java.version}</maven.compiler.source>
</properties>

<dependencies>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.1.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <!-- Optional. Allows the app to be run by simply typing mvn jetty:run -->
        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.4</version>
            <dependencies>
                <dependency>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                    <version>1.2.13</version>
                </dependency>
            </dependencies>
            <configuration>
                <contextPath>/</contextPath>
                <scanIntervalSeconds>10</scanIntervalSeconds>
                <connectors>
                    <connector
                        implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                        <port>9090</port>
                    </connector>
                </connectors>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
        </plugin>
    </plugins>
</build>

【问题讨论】:

  • 你检查过你的maven版本是否和你的java版本比较吗?
  • 您使用的是 ca。 9 岁的 pluing (maven-war-plugin) 和 13 岁的插件 (maven-jetty-plugin),你应该使用最新版本 maven.apache.org/plugins 进一步
  • 我更改了 maven-war-plugin 和 maven-jetty-plugin 的版本,错误消失了。非常感谢。
  • @Sani 请发布解决方案并验证它

标签: java maven pom.xml


【解决方案1】:

修改你pom.xml中war插件的版本,根据你的jdk版本添加maven-compiler-plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.3.1</version>
</plugin>
<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.1</version>
</plugin>

【讨论】:

    猜你喜欢
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多