最近在ubuntu上部署了一個網站,用的是tomcat但是老部署不成功,提示如下錯誤:
Jun 10, 2009 5:42:47 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener
java.security.AccessControlException: access denied (java.util.PropertyPermission webapp.root read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:342)
at java.security.AccessController.checkPermission(AccessController.java:553)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1302)
at java.lang.System.getProperty(System.java:669)
at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(WebUtils.java:130)
at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebConfigurer.java:117)
at org.springframework.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:51)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:123)
at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:145)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:769)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
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:616)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
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:616)
at org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:177)
Jun 10, 2009 5:42:48 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.ExceptionInInitializerError
at org.springframework.web.context.ContextLoader.<init>(ContextLoader.java:139)
at org.springframework.web.context.ContextLoaderListener.createContextLoader(ContextLoaderListener.java:57)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:48)
"localhost.2009-06-10.log" 133L, 10359C
后來在前輩指導下解決了這個問題,有2種可能:
1、ubuntu自帶的JDK問題,請重新安裝SUN的JDK #sudo apt-get install sun-java6-jre sun-java6-jdk sun-java6-demo sun-java6-doc sun-java6-source sun-java6-plugin sun-java6-fonts libmyodbc tdsodbc
相關設置如下
sudo gedit /etc/profile //這個配制文件就是一個純文本的東西,用什么工具自己選擇vi、vim、gvim、emacs什么的都可以,只要是你機器里有的文本編輯工具就可以
JAVA_HOME=/usr/lib/jvm/java-6-sun
CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib
JRE_HOME=/usr/lib/jvm/java-6-sun/jre
export JRE_HOME
export CLASSPATH
export JAVA_HOME
sudo gedit /etc/environment
JAVA_HOME=/usr/lib/jvm/java-6-sun
CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib
提示:如果要讓它立刻生效可以在終端里輸入: . /etc/environment
一般情況可以不做設置,因為在這些安裝完成后,機器必須得重啟下,所沒必要設置,但如果只是設置一下
環境變量就要用它的話,就可以采用這種方法。
sudo gedit /etc/jvm
在文件頂部添加
/usr/lib/jvm/java-6-sun
提示:這一步是在設置JDK的優先級
sudo gedit ~/.bashrc
在文件的末尾,添加如下兩行
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export PATH=$PATH:$JAVA_HOME/bin
提示:這是在設置用戶變量
如果您的機器里裝著多個JDK用下面的方法來選擇JDK版本(8.04默認是沒有安裝JDK的,上面的安裝只安裝了一個版本的JDK,可以不設置)
sudo update-alternatives --config java
更新當前系統的JDK版本
sudo update-java-alternatives -s java-6-sun
然后編輯 #sudo vim /etc/init.d/tomcat6
中找到JDK_DIRS的配置,將其替換為:JDK_DIRS="/usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm"
然后重新啟動tomcat OK解決了!
2、TOMCAT的安全模式打開了
直接編輯#sudo vim /etc/init.d/tomcat6
找到TOMCAT6_SECURITY=Yes 改為no就OK了,重新啟動就能運行了