【问题标题】:Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no-args constructor无法构造 org.apache.maven.plugin.war.util.WebappStructure 因为它没有无参数构造函数
【发布时间】:2011-11-24 07:04:15
【问题描述】:
[INFO] [war:war {execution: default-war}]
[INFO] Packaging webapp
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no-args constructor
---- Debugging information ----
message             : Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no-args constructor
cause-exception     : com.thoughtworks.xstream.converters.reflection.ObjectAccessException
cause-message       : Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no-args constructor
class               : org.apache.maven.plugin.war.util.WebappStructure
required-type       : org.apache.maven.plugin.war.util.WebappStructure
path                : /webapp-structure
line number         : 1
-------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Trace
com.thoughtworks.xstream.converters.ConversionException: Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no-args constructor
---- Debugging information ----
message             : Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no-args constructor
cause-exception     : com.thoughtworks.xstream.converters.reflection.ObjectAccessException
cause-message       : Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no-args constructor
class               : org.apache.maven.plugin.war.util.WebappStructure
required-type       : org.apache.maven.plugin.war.util.WebappStructure
path                : /webapp-structure
line number         : 1
-------------------------------
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:63)
    at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:45)
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:46)
    at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:117)
    at com.thoughtworks.xstream.core.ReferenceByXPathMarshallingStrategy.unmarshal(ReferenceByXPathMarshallingStrategy.java:29)
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:846)
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:833)
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:781)
    at org.apache.maven.plugin.war.util.WebappStructureSerializer.fromXml(WebappStructureSerializer.java:73)
    at org.apache.maven.plugin.war.AbstractWarMojo.buildWebapp(AbstractWarMojo.java:404)
    at org.apache.maven.plugin.war.AbstractWarMojo.buildExplodedWebapp(AbstractWarMojo.java:375)
    at org.apache.maven.plugin.war.WarMojo.performPackaging(WarMojo.java:181)
    at org.apache.maven.plugin.war.WarMojo.execute(WarMojo.java:143)
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
    at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: com.thoughtworks.xstream.converters.reflection.ObjectAccessException: Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no-args constructor
    at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.newInstance(PureJavaReflectionProvider.java:59)
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.instantiateNewInstance(AbstractReflectionConverter.java:257)
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:124)
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:56)
    ... 31 more
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4 seconds
[INFO] Finished at: Sat Sep 24 17:25:45 CEST 2011
[INFO] Final Memory: 15M/37M
[INFO] ------------------------------------------------------------------------

JDK:1.7

Maven 编译器插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
</plugin>

当我运行install target时出现上述错误,我该如何解决?

【问题讨论】:

  • 可能会影响您的 xstream 版本?

标签: maven-2 maven


【解决方案1】:

也许正在使用maven war plugin 的版本,它不适用于Java 7?根据this issue(描述了一个类似的问题),maven war 插件的2.1.1 版本应该可以工作。

在你的 pom.xml 中包含以下内容

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
</plugin>

【讨论】:

  • 但不知道如何应用该补丁
  • @kasim。更新了答案以说明如何执行此操作。
  • 仍然遇到同样的错误,maven-war-plugin:2.1.1 和 Java 7。有什么想法吗?编辑:似乎它是针对“战争”目标而固定的,而不是针对“爆炸”目标。 jira.codehaus.org/browse/MWAR-279
  • 在 JRockIt JVM v1.6.0_6-R28.1.4-4.0.1 上看到的问题。通过从 Sun (u45) 迁移到 Java 6 JDK 的最新版本来解决。
  • 现在有一个 2.4 版本的 maven-war-plugin 为我解决了这个问题。
【解决方案2】:

我在做mvn install 时遇到了这个问题。我首先通过mvn clean 解决了这个问题,然后是mvn install

使用 maven 2.1.1、JDK 1.7.0.45。

【讨论】:

    【解决方案3】:

    已确认:JDK7 with Maven 2.x 会产生此错误。

    我正在使用 Maven 2.2.1 和 JDK7 并收到此错误。我将 JDK 更改为 1.6 版,它工作正常。

    【讨论】:

      【解决方案4】:

      不要更改 JDK 版本和 Maven 版本,试试这个:

      <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
              <source>1.7</source>
              <target>1.7</target>
          </configuration>
          <version>2.3.2</version>
      </plugin>
      

      【讨论】:

        【解决方案5】:

        确认,我在使用 maven 3.0.2 和 jdk 1.7.0_02 时遇到了同样的问题。在针对 jdk 1.6.0_30 运行后,它编译得很好。

        【讨论】:

          【解决方案6】:

          我认为版本不是问题。 我解决了删除我的目标文件夹(因为它包含 webapp-cache.xml)并再次进行 Maven 安装。

          【讨论】:

            【解决方案7】:

            Apache Maven WAR 插件 3.0.0 解决了所有问题:

            <artifactId>maven-war-plugin</artifactId>
            <version>3.0.0</version>
            

            用jdk 1.6、1.7还是1.8都没关系

            【讨论】:

              【解决方案8】:

              这肯定与不兼容的插件、库和语言版本有关。

              两年后,两个 Java 版本,我在从一本关于 Spring 和 Hibernate 的旧书中做一个示例项目时遇到了同样的错误。

              我能够通过注释掉 apache.maven.plugins 的所有版本标记并将 Java 版本设置为 1.8 来解决该错误。这让我知道库的最新和最好的版本是什么,以及来自 Maven 的一些关于缺少版本标签的警告的代价。如果您关心警告,可以将版本标签设置为最新版本,来自 Maven 的警告应该会消失。

              我执行了mvn clean package,然后就执行了mvn package

              <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-war-plugin</artifactId>
              <!-- <version>2.1-beta-1</version> -->
              </plugin>
              <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-compiler-plugin</artifactId>
              <!-- <version>2.1</version> -->
                   <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                   </configuration>
              </plugin>
              

              【讨论】:

                【解决方案9】:

                如果您使用 jdk 1.6,请将此插件条目添加到您的 pom.xml

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.0.2</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <compilerArgument>-Xlint:all</compilerArgument>
                        <showWarnings>true</showWarnings>
                        <showDeprecation>true</showDeprecation>
                    </configuration>
                </plugin>
                

                【讨论】:

                • 谢谢,即使添加选项也有助于修复构建 :)
                【解决方案10】:

                我的 Eclipse Kepler 遇到了这个问题。一旦我搬到 4.4 (Luna) ,一切都消失了。必须是eclipse + maven嵌入的问题

                我尝试了 JDK 1.7 和 1.8。没有不同。

                【讨论】:

                  【解决方案11】:

                  对我来说,更改插件版本无法解决问题,更改 JDK 版本不在我的控制范围内。

                  但是在mvn tomcat6:deploy 之前运行mvn clean 解决了这个问题。

                  【讨论】:

                    【解决方案12】:

                    确保您的构建路径中包含 JDK 版本以及在构建路径中指定的版本 源标签匹配相同。

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>2.1</version>
                        <configuration>
                         **<source>1.7</source>**
                           <target>1.7</target>
                           <debug>true</debug>
                        </configuration>
                    </plugin> `
                    

                    我的构建路径在源标签中指向 jdk 1.7 和“1.6”,当我在源标签中将版本更正为 1.7 时,问题得到了解决。

                    执行 mnv clean 和 mvn package。

                    【讨论】:

                      【解决方案13】:

                      尝试删除所有缓存。当我删除目标文件夹时,它工作正常。

                      (目标文件夹是maven放置所有编译代码的地方)

                      【讨论】:

                        【解决方案14】:

                        在我将我的 java 版本从 8 升级到某些 8.x 后,我遇到了同样的错误,我通过转到 pom 然后 1 修复它。右键单击 > maven > 添加插件 2. 输入 org.apache.maven 和然后寻找war插件添加并保存,然后清理并安装。它应该可以工作。

                        【讨论】:

                          【解决方案15】:

                          使用这个插件

                          <plugin>
                          
                          <artifactId>maven-war-plugin</artifactId>
                          
                          <version>3.2.2</version>
                          
                          </plugin>
                          

                          示例 pom.xml

                          pom.xml screenshot`

                          【讨论】:

                            猜你喜欢
                            • 2015-12-23
                            • 2010-12-15
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多