Nie można skonstruować org.apache.maven.plugin.war.util.WebappStructure, ponieważ nie ma konstruktora bez argumentów

93
[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

Wtyczka kompilatora Maven:

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

po uruchomieniu programu Install Target powyżej pojawia się błąd, jak mogę go rozwiązać?

TechFind
źródło
prawdopodobnie podbić twoją wersję xstream?
rogerdpack

Odpowiedzi:

136

Być może używana jest wersja wtyczki maven war , która nie działa z Javą 7? Zgodnie z tym problemem (który opisuje podobny problem), 2.1.1wersja wtyczki maven war powinna działać.

Uwzględnij następujące informacje w swoim pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
</plugin>
Raghuram
źródło
ale nie wiem, jak zastosować tę łatkę
TechFind,
@kasim. Zaktualizowana odpowiedź, aby wskazać, jak to zrobić.
Raghuram
Nadal pojawia się ten sam błąd, maven-war-plugin: 2.1.1 i Java 7. Jakieś pomysły? EDYCJA: Wydaje się, że jest to ustalone dla celu „wojny”, a nie dla celu „eksplodowania”. jira.codehaus.org/browse/MWAR-279
BrunoJCM
Problem widoczny w JRockIt JVM v1.6.0_6-R28.1.4-4.0.1. Rozwiązanie rozwiązane przez przejście na ostatnią wersję Java 6 JDK firmy Sun (u45).
8bitjunkie
4
Do tej pory istnieje wersja 2.4 wtyczki maven-war-plugin, która rozwiązała problem za mnie.
Benjamin Seiller,
16

Miałem ten problem podczas wykonywania pliku mvn install. Rozwiązałem to, wykonując mvn cleanpierwszy, a następnie plik mvn install.

Korzystanie z maven 2.1.1, JDK 1.7.0.45.

SebastianH
źródło
9

Potwierdzono: JDK7 z Maven 2.x spowoduje ten błąd.

Używam Maven 2.2.1 i JDK7 i otrzymałem ten błąd. Zmieniłem JDK na wersję 1.6 i działa dobrze.

visu
źródło
8

Zamiast zmieniać wersje JDK i Maven, spróbuj tego:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
    <version>2.3.2</version>
</plugin>
Kresimir Plese
źródło
5

Potwierdzam, napotkałem ten sam problem z maven 3.0.2 i jdk 1.7.0_02. Po uruchomieniu z jdk 1.6.0_30 skompilował się dobrze.

Philip Rodrigues
źródło
4

Nie sądzę, żeby problem stanowiła wersja. Rozwiązałem problem usunięcia mojego folderu docelowego (ponieważ zawiera on webapp-cache.xml) i ponownej instalacji Mavena.

JS
źródło
4

Wtyczka Apache Maven WAR 3.0.0 rozwiązała wszystkie problemy:

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

Nie ma znaczenia, czy używasz jdk 1.6, 1.7 czy 1.8

Greg
źródło
2

jeśli używasz jdk 1.6, uprzejmie dodaj ten wpis wtyczki do swojego 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>
Motilal Daravatu
źródło
Dzięki, nawet dodanie opcji pomogło wyleczyć kompilację :)
Guido U. Draheim
2

Zdecydowanie wydaje się to być związane z niekompatybilnymi wersjami wtyczek, bibliotek i języków.

Dwa lata i dwie wersje Javy później miałem ten sam błąd podczas wykonywania przykładowego projektu ze starszej książki o Spring and Hibernate.

Udało mi się rozwiązać ten błąd, wykomentowując wszystkie tagi wersji dla apache.maven.plugins i ustawiając wersję Java na 1.8. To dało mi znać, jaka była najnowsza i najlepsza wersja bibliotek, z kosztami niektórych ostrzeżeń od Mavena o brakujących tagach wersji. Jeśli zależy Ci na ostrzeżeniach, możesz ustawić tagi wersji na najnowszą wersję, a ostrzeżenia z Mavena powinny zniknąć.

Wykonałem, mvn clean packagea potem po prostu 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>
A. Rick
źródło
2

Miałem ten problem z moim Keplerem zaćmienia. Jak tylko przeszedłem na 4.4 (Luna), wszystko zniknęło. To musi być problem z osadzonym eclipse + maven

Próbowałem zarówno JDK 1.7, jak i 1.8. Bez różnicy.

jprism
źródło
1

Dla mnie zmiana wersji wtyczki nie mogła rozwiązać problemu i nie mam wpływu na zmianę wersji JDK.

Jednak działa mvn cleanprzed mvn tomcat6:deployrozwiązaniem tego problemu.

Yogesh Patil
źródło
0

Upewnij się, że wersja JDK w ścieżce kompilacji i wersja określona w tagu źródłowym są takie same.

<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> `

Miałem ścieżkę kompilacji wskazującą na jdk 1.7 i "1.6" w tagu źródłowym, kiedy poprawiłem wersję do 1.7 w tagu źródłowym, problem został rozwiązany.

Uruchom pakiet mnv clean i mvn.

Vinay
źródło
0

Spróbuj usunąć całą pamięć podręczną. Kiedy usunąłem folder docelowy, działa dobrze.

(Folder docelowy to miejsce, w którym maven umieszcza cały skompilowany kod)

Sachin Ambalkar
źródło
0

Otrzymałem ten sam błąd po uaktualnieniu mojej wersji Java z 8 do około 8.x, naprawiłem go, przechodząc do pom, a następnie 1. kliknij prawym przyciskiem myszy> maven> dodaj wtyczkę 2. wpisz org.apache.maven i poszukaj war plugin dodaj go i zapisz, a następnie wyczyść i zainstaluj. Powinno działać.

Rajan Chauhan
źródło