Hallo!
Ich versuche gerade mich in Struts 2 einzuarbeiten. Habe zuvor noch nichts mit Web-Frameworks gemacht. Mittlerweile läuft hier Struts 2 ohne Probleme und ich habe ein paar Beispiele durchgemacht.
Nun wollte ich aber versuchen eine Seite mit Tiles 2 zu bauen. Hab dazu erstmal gegoogelt und nur folgendes gefunden:
http://struts.apache.org/2.x/docs/tiles-plugin.html
http://bridee.blogspot.com/2007/05/s...2-tiles-2.html
http://www.developpez.net/forums/sho...24&postcount=6
Also hab ich mich erst mal an die beiden letzten Links gehalten: per Eclipse neues Tomcat Projekt angelegt, struts2-blank.war inportiert und dann wie in den Links oben die Dateien angepasst.
Wenn ich anschließend aber meinen Tomcat in Eclipse neustarte erhalte ich folgende Exception:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| SCHWERWIEGEND: Error configuring application listener of class org.apache.struts2.tiles.StrutsTilesListener
java.lang.ClassNotFoundException: org.apache.struts2.tiles.StrutsTilesListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3712)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
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:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)] |
Als Listener habe ich folgende Beide ausprobiert:
org.apache.tiles.listener.TilesListener
org.apache.struts2.tiles.TilesListener
Beide Male ClassNotFound.
Libs sollten alle im Projekt eingebunden sein. Habe sie per "Externe Archive hinzufügen" in Eclipse importiert.
Freue mich über jede Antwort 
mfg flo
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
-Rich Cook
Hallo!
Wenn zu meinem obigen Problem keiner eine Lösung weiß, weiß ja jemand vielleicht eine kleine Struts2 Beispielanwendung mit Tiles?
mfg flo
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
-Rich Cook
Hallo!
Genau das ist glaub ich das Problem. Bei einem der Beispiele war etwas dabei, dass man eine Abhängigkeit eintragen muss, dort war aber nur beschrieben wie das mit Maven geht.
Unter den Projekt Eigenschaften hab ich nichts mit J2EE Dependencies. Ich verwende das Sysdeo-Plugin. Das Projekt ist ein Tomcat-Projekt.
Das Einzige was ich unter den Eigenschaften gefunden hab ist dass ich da den DevLoader aktivieren kann und ich dort meinen externen Libs auswählen kann. Die Klasse findet er aber trotzdem nicht.
mfg flo
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
-Rich Cook
Hallo!
Schonmal Danke für deine Hilfe
Hab das Ganze gerade mit dem WTP ausprobiert:
-Dynamic Web Project angelegt
-Struts-blank importiert
-web.xml und struts.xml angepasst
-Projekt-Eigenschaft -> J2EE Module Dependecies -> externe Jars hinzugefügt
-Server eingerichtet (Tomcat 5.5)
-Run on Server
=> java.lang.ClassNotFoundException: org.apache.tiles.listener.TilesListener
bzw: java.lang.ClassNotFoundException: org.apache.struts2.tiles.TilesListener
Hast du vielleicht noch eine Idee?
mfg flo
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
-Rich Cook
So, mittlerweile hab ichs geschafft, dass die Library anscheinend geladen wird, zumindest habe ich keine ClassNotFoundException mehr. Worans jetz lag kann ich aber nicht genau sagen.
Aber mittlerweile habe ich das nächste Problem: beim Starten des Servers erhalte ich jetzt folgende Exception:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| SCHWERWIEGEND: Exception sending context initialized event to listener instance of class org.apache.struts2.tiles.StrutsTilesListener
java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule
at org.apache.tiles.definition.UrlDefinitionsFactory.init(UrlDefinitionsFactory.java:118)
at org.apache.tiles.impl.BasicTilesContainer.initializeDefinitionsFactory(BasicTilesContainer.java:185)
at org.apache.tiles.impl.BasicTilesContainer.init(BasicTilesContainer.java:121)
at org.apache.tiles.factory.TilesContainerFactory.initializeContainer(TilesContainerFactory.java:232)
at org.apache.tiles.factory.TilesContainerFactory.createTilesContainer(TilesContainerFactory.java:198)
at org.apache.tiles.factory.TilesContainerFactory.createContainer(TilesContainerFactory.java:163)
at org.apache.tiles.web.startup.TilesListener.createContainer(TilesListener.java:90)
at org.apache.struts2.tiles.StrutsTilesListener.createContainer(StrutsTilesListener.java:66)
at org.apache.tiles.web.startup.TilesListener.contextInitialized(TilesListener.java:57)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
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:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) |
Nach ein bischen googeln bin ich auf folgende Lösung gestoßen:
Code :
1
2
3
| You have to put in "web.xml" the "definitions-config" init parameter,
that points to your Tiles definitions xml file or you can use the
default name, under /WEB-INF/tiles.xml |
Ich verwende aber eben dieses tiles.xml im WEB-INF Verzeichnis!? Nur eclipse bringt mir bei eben diesem File eine Warnung dass es den Doctype nicht finden kann:
Doctype:
Code :
1
2
3
| <!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://struts.apache.org/dtds/tiles-config_2_0.dtd"> |
Warnung:
Code :
1
| The file cannot be validated as the XML Schema "http://struts.apache.org/dtds/tiles-config_2_0.dtd" that is specified as describing the syntax of the file cannot be located. |
Bin über jede Hilfe dankbar.
flo
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
-Rich Cook
Hallo!
Danke für die Antworten, konnte mich in letzter Zeit nur wenig mit dem Problem befassen.
Das eine Struts2/Tiles2 Projekt läuft immernoch nicht... Eingetragen (web.xml, tiles.xml, ...) sind alle gemacht, trotzdem erhalte ich beim Starten des Server folgende Exception:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| SCHWERWIEGEND: Exception sending context initialized event to listener instance of class org.apache.struts2.tiles.StrutsTilesListener
java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule
at org.apache.tiles.definition.UrlDefinitionsFactory.init(UrlDefinitionsFactory.java:118)
at org.apache.tiles.impl.BasicTilesContainer.initializeDefinitionsFactory(BasicTilesContainer.java:185)
at org.apache.tiles.impl.BasicTilesContainer.init(BasicTilesContainer.java:121)
at org.apache.tiles.factory.TilesContainerFactory.initializeContainer(TilesContainerFactory.java:232)
at org.apache.tiles.factory.TilesContainerFactory.createTilesContainer(TilesContainerFactory.java:198)
at org.apache.tiles.factory.TilesContainerFactory.createContainer(TilesContainerFactory.java:163)
at org.apache.tiles.web.startup.TilesListener.createContainer(TilesListener.java:90)
at org.apache.struts2.tiles.StrutsTilesListener.createContainer(StrutsTilesListener.java:66)
at org.apache.tiles.web.startup.TilesListener.contextInitialized(TilesListener.java:57)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
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:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) |
Dieses Projekt nutzt Struts 2.0.9 sowie Tiles 2.0.4.
Ich habe im Internet aber ein anderes leeres Struts/Tiles Projekt gefunden, welches Struts 2.0.6 und Tiles 2.0 nutzt. Dieses Projekt kann ich ohne Probleme mit meinem Server starten und es funktioniert auch.
Über jeden Hinweis wie ich die aktuelle Struts / Tiles Version zum laufen bekomme würd ich mich freuen.
mfg flo
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
-Rich Cook