今天在使用jetty做容器运行一个java web app时却给出了这样的错误:
1java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "getClassLoader") 2 at java.security.AccessControlContext.checkPermission(Unknown Source) 3 at java.security.AccessController.checkPermission(Unknown Source) 4 at org.eclipse.jetty.server.handler.ContextHandler$Context.getClassLoader(ContextHandler.java:2390) 5 at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:210) 6 at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:250) 7 at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:106) 8 at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:103) 9 at org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:106) 10 at org.eclipse.jetty.annotations.ServletContainerInitializerListener.doStart(ServletContainerInitializerListener.java:107) 11 at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 12 at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81) 13 at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58) 14 at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96) 15 at org.eclipse.jetty.server.handler.ScopedHandler.doStart(ScopedHandler.java:115) 16 at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763) 17 at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249) 18 at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242) 19 at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) 20 at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494) 21 at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 22 at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 23 at org.eclipse.jetty.server.Server.doStart(Server.java:282) 24 at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 25 at net.sourceforge.eclipsejetty.starter.embedded.JettyEmbeddedAdapter.start(JettyEmbeddedAdapter.java:67) 26 at net.sourceforge.eclipsejetty.starter.common.AbstractJettyLauncherMain.launch(AbstractJettyLauncherMain.java:85) 27 at net.sourceforge.eclipsejetty.starter.embedded.JettyEmbeddedLauncherMain.main(JettyEmbeddedLauncherMain.java:42)

在网上搜索一番后,找到了解决办法:
1. 查看工程使用的哪个JRE

2. 在这个目录下的【security】文件夹下找到【java.policy】文件:

3. 用记事本或者notepad++打开它,并在grant中增加下面的两行,并保存。

4. 重启Jetty,错误消失,结果正常。
至于为什么这样可以解决,网上还搜到相关说明。我暂时也没时间去深究,等以后有时间再说吧。