2010-07-29 3 views
6

Ich erstelle eine grundlegende Struts2, Maven WebApp und bekomme diesen Fehler, wenn ich auf Tomcat 6 oder Jetty bereitstellen. Hat jemand das gesehen?Struts2 Fehler beim Bereitstellen: Bean kann nicht geladen werden: type: class: com.opensymphony.xwork2.ObjectFactory

2010-07-29 15:33:38.801::WARN: failed struts2 
    Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean - jar:file:/C:/workspaces/test/test/target/work/webapp/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:29:72 
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:208) 
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:101) 
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:131) 
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52) 
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395) 
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452) 
    at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69) 
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51) 
    at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:589) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:139) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:510) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 
    at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.java:110) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) 
    at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.Server.doStart(Server.java:222) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.java:132) 
    at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:357) 
    at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:293) 
    at org.mortbay.jetty.plugin.Jetty6RunWar.execute(Jetty6RunWar.java:67) 
    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.executeStandaloneGoal(DefaultLifecycleExecutor.java:569) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539) 
    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:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:592) 
    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: Bean type class com.opensymphony.xwork2.ObjectFactory with the name xwork has already been loaded by bean - jar:file:/C:/workspaces/ulearn/ulearn/target/work/webapp/WEB-INF/lib/struts2-core-2.0.11.2.jar!/struts-default.xml:30:72 - bean - jar:file:/C:/workspaces/ulearn/ulearn/target/work/webapp/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:29:72 
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:193) 
... 47 more 

Mit Maven ...

<dependency> 
    <groupId>org.apache.struts</groupId> 
    <artifactId>struts2-core</artifactId> 
    <version>2.1.8.1</version> 
    </dependency> 

web.xml

<filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Looks ziemlich geradlinig, ich verstehe nicht, warum es wird nicht geladen. Ich folgte dem grundlegenden Tutorial. Ich habe nach dieser Fehlermeldung gegoogelt und konnte nichts Relevantes finden.

+0

Ich hatte das gleiche Problem mit Weblogic-Server, änderte ich die Eigenschaften des Servers mit der Registerkarte Server in Eclipse, Weblogic - Publishing, ** die Veröffentlichung erzielte ein explodiertes Archiv ** vielleicht hat jemand den gleichen Fehler –

+0

Als Followup, Ich hatte zur Laufzeit zwei Struts2-Versionen in meinem Klassenpfad, weil ich mit einer Version gestartet habe und dann wieder mit einer anderen Version gestartet habe, ohne sauber zu laufen. Also 1 Version in Pom, aber zwei in Laufzeit Klassenpfad. Reinigung und Neustart Steg funktioniert :) – Andy

Antwort

20

Ihr Problem ist eigentlich ganz klar, ob Sie die Stack-Trace lesen:

Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the 
name xwork has already been loaded by bean - 
jar:file:/C:/workspaces/ulearn/ulearn/target/work/webapp/WEB-INF/lib/struts2-core-2.0.11.2.jar!/struts-default.xml:30:72 
- bean - 
jar:file:/C:/workspaces/ulearn/ulearn/target/work/webapp/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:29:72 

Sie haben eine Kopie von struts2-core-2.0.11.2.jarund eine Kopie struts2-core-2.1.8.1.jar in Ihren WEB-INF/lib Verzeichnissen. Ich denke, du solltest nur einen von ihnen haben. Säubern Sie etwas (das Ausführen eines mvn clean könnte genug sein).


PS: Ich habe keine Ahnung, warum Sie auch Sachen aus C:/workspace/test als Show sein, die erste Linie kommen haben:

jar:file:/C:/workspaces/test/test/target/work/webapp/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:29:72 

Es ist auf jeden Fall etwas seltsam und chaotisch mit Classpath. Ich habe keine Erklärung außer der oben genannten.

2

mit der obigen Antwort Zustimmen

Überprüfen Sie Ihre Bibliothek und Classpath für die oben genannten Gläser und fixieren sie

Manchmal auch wenn die Gläser nicht in der IDE zu sehen ist, sind sie int die Build-Dateien vorhanden, so Eine Behebung des Classpath und eine CLEAN AND BUILD sollte das Problem beheben.

+0

+1 für sauber! ... – Andy

0

Ich denke struts2-Core-2.1.8.1.jar Kopie oder Sie haben dieses Glas einige, wo in Ihrer Webapplikation so entfernen Sie es und weiter

0

Problem-Datei enthalten: Der Konflikt aufgetreten als 2 Dateien der verschiedenen Versionen gehen Gerade Weg C:/workspaces/ulearn/ulearn/target/work/webapp/WEB-INF/lib/ des Computers und löschen Sie die Datei struts2-core-2.0.11.2.jar und nur hält die neuesten ein: vom Webcontainer

Lösung geladen werden. Wenn diese Art von Konflikt auch bei einer anderen Datei auftritt, dann löschen Sie diese Datei auch Danach wird keine Ausnahme da sein.

Verwandte Themen