Bonjour,
J'ai un problème assez tordu que je n'arrive pas a démêler.
Je suis en train de convertir une veille appli qui était toute paramétrée pour eclipse en la rendant un peu plus agnostique de l'EDI.
Du coup je tente de changer toute la configuration du lancement du Tomcat en un but Maven grâce au plugin Tomcat.
Pour l'instant j'ai ça :

Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<plugin>
	<groupId>org.apache.tomcat.maven</groupId>
	<artifactId>tomcat7-maven-plugin</artifactId>
	<!-- On prend la version 2.1 pour avoir la dépendance Tomcat en version 7.0.37 -->
	<version>2.1</version>
<!-- Test d̛’exclusion -->
	<!--<dependencies>-->
		<!--<dependency>-->
			<!--<groupId>org.apache.tomcat.maven</groupId>-->
			<!--<artifactId>tomcat7-maven-plugin</artifactId>-->
			<!--<version>2.1</version>-->
			<!--<exclusions>-->
				<!--<exclusion>-->
					<!--<groupId>org.slf4j</groupId>-->
					<!--<artifactId>jcl-over-slf4j</artifactId>-->
				<!--</exclusion>-->
			<!--</exclusions>-->
		<!--</dependency>-->
	<!--</dependencies>-->
 
	<configuration>
		<additionalConfigFilesDir>tools/tomcat</additionalConfigFilesDir> <<<--- Pour essayer de faire prendre en compte le catalina.properties, mais je n’ai pas pu m’en assurer pour l’instant
		<contextFile>tools/tomcat/context.xml</contextFile>
		<serverXml>tools/tomcat/server.xml</serverXml>
		<tomcatUsers>tools/tomcat/tomcat-users.xml</tomcatUsers>
		<tomcatWebXml>tools/tomcat/web.xml</tomcatWebXml>
		<mode>context</mode>         <<<--- Je n’arrive pas à savoir que fait cette ligne
		<charset>ISO-8859-15</charset>
		<systemProperties>
			<CATALINA_HOME>C:\[…]\Tomcat</CATALINA_HOME>
			<CATALINA_BASE>C:\[…]\Tomcat</CATALINA_BASE>
			<!-- Report de "VM arguments" du lauch config d’eclipse -->
			<JAVA_OPTS>
				[…]
				-XX:PermSize=96m
				-XX:MaxPermSize=256m
				-Dcom.sun.management.jmxremote
				-Dcatalina.base="C:\[…]\workspaces\[…]\.metadata\.plugins\org.eclipse.wst.server.core\tmp0"
				-Dcatalina.home="C:\[…]\Tomcat"
				<!--  -Dwtp.deploy="C:\[…]\workspaces\[…]\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps" -->
				-Djava.endorsed.dirs="C:\[…]\Tomcat\endorsed"
				-Dcatalina.properties="C:\[…]\workspaces\[…]\tools\tomcat\catalina.properties"
			</JAVA_OPTS>
			<!-- Report de "Environment" du lauch config d’eclipse -->
			[…]
			<CLASSPATH>[…]</CLASSPATH>
			[…]
			<NLS_DATE_FORMAT>YYYY-MM-DD HH24:MI:SS</NLS_DATE_FORMAT>
			<NLS_LANG>FRENCH_FRANCE</NLS_LANG>
			<ORACLE_HOME>[…]</ORACLE_HOME>
			[…]
		</systemProperties>
	</configuration>
</plugin>

Et lorsque je tente de lancer la commande «mvn tomcat7:run» j'ai le message suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/[]/target/mdg-web/WEB-INF/lib/slf4j-jcl-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/[]/WEB-INF/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Detected both jcl-over-slf4j.jar AND slf4j-jcl.jar on the class path, preempting StackOverflowError. 
SLF4J: See also http://www.slf4j.org/codes.html#jclDelegationLoop for more details.
[ERROR] ContextLoader - Context initialization failed <java.lang.IllegalStateException: Cannot load configuration class: com.[].SocleCacheConfiguration>java.lang.IllegalStateException: Cannot load configuration class: com.[].SocleCacheConfiguration
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:368)
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:244)
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:694)
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:633)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ExceptionInInitializerError
	at org.slf4j.impl.StaticLoggerBinder.<init>(StaticLoggerBinder.java:73)
	at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:42)
	at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
	at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107)
	at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
	at com.[].SocleCacheConfiguration.<clinit>(SocleCacheConfiguration.java:25)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:274)
	at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:386)
	at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:219)
	at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
	at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:317)
	at org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:118)
	at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:92)
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:358)
	... 16 more
Caused by: java.lang.IllegalStateException: Detected both jcl-over-slf4j.jar AND slf4j-jcl.jar on the class path, preempting StackOverflowError. See also http://www.slf4j.org/codes.html#jclDelegationLoop for more details.
	at org.slf4j.impl.JCLLoggerFactory.<clinit>(JCLLoggerFactory.java:57)
	... 33 more
Je comprend bien mon message d'erreur qui me dit que j'ai 2 lib (jcl-over-slf4j.jar AND slf4j-jcl.jar) qui se contredisent et provoque une boucle. Mais mon soucis est de savoir comment faire pour en exclure une (jcl-over-slf4j.jar de préférence).
Je me suis assuré que mon soucis était bien celui çi en supprimant manuellement slf4j-jcl.jar de WEB-INF/lib.
En exécutant ma commande avec «-e -X» je me suis rendu compte que «jcl-over-slf4j.jar» est elle embarqué par le plugin tomcat7 de maven et que c'est pour cela que je n'ai pas cette erreur avec le launcher de eclipse.
Du coup j'ai aussi essayer d'exclure slf4j-jcl.jar mais c'est une dépendance d'une dépendance et l'ajout d'un bloc «exclusion» n'y fait rien. Même si je met une dépendance explicite à cette sous dépendance avec l'exclusion.

Je commence sérieusement à sécher, donc si vous avez des pistes a me proposer …