最近直接把兩個項目打成war包在tomcat下發布,出現了不少莫名奇妙的問題,就是不能發佈成功,只能有一個項目能成功,在網上查了不少方法,覺得是兩個項目中jar包出現衝突,也按照網上的方法把兩個項目中相同的jar包找出來放在了tomcat的lib目錄下。結果仍是無論用,只能啓動一個,另一個被中斷。
最後爲了測試,我把2個項目都放在eclipse下同時部署2個項目並啓動tomcat,終於報錯啦,而這個錯誤就是解決問題的關鍵 錯誤以下: java
java.lang.IllegalStateException: Web app root system property already set to different value
看了這篇帖子明白啦
http://blog.csdn.net/downloadsunlight2009/article/details/7514634
webAppRootKey是在java web項目的web.xml配置文件中表示項目的惟一標示,在Eclipse調試Web項目時,項目的路徑是一個臨時路徑,不在真正的路徑下,能夠經過log4j日誌的方式打印出屬性值,來看看臨時項目路徑在哪裏,能夠用System.getProperty("web.sample.root");若是web.xm 內沒有設置webAppRootKey項,是爲默認設置,那麼webAppRootKey就是缺省的"webapp.root"。
因爲個人兩個項目都沒有設置這個webAppRootKey值,因此兩個webRootKey都是默認缺省值。發生錯誤 web
解決辦法:
在其中一個項目中的web.xml文件中的log4jlitener下面添加以下解決辦法: spring
<listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <context-param> <param-name>webAppRootKey</param-name> <param-value>app.root</param-value> </context-param> <context-param>