天天看点

Access denied (java.lang.RuntimePermission getClas

今天在使用jetty做容器运行一个java web app时却给出了这样的错误:

<a href="http://my.oschina.net/itblog/blog/354347#">?</a>

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

<code>java.security.accesscontrolexception: access denied (</code><code>"java.lang.runtimepermission"</code> <code>"getclassloader"</code><code>)</code>

<code>    </code><code>at java.security.accesscontrolcontext.checkpermission(unknown source)</code>

<code>    </code><code>at java.security.accesscontroller.checkpermission(unknown source)</code>

<code>    </code><code>at org.eclipse.jetty.server.handler.contexthandler$context.getclassloader(contexthandler.java:</code><code>2390</code><code>)</code>

<code>    </code><code>at org.apache.tomcat.util.scan.standardjarscanner.scan(standardjarscanner.java:</code><code>210</code><code>)</code>

<code>    </code><code>at org.apache.jasper.servlet.tldscanner.scanjars(tldscanner.java:</code><code>250</code><code>)</code>

<code>    </code><code>at org.apache.jasper.servlet.tldscanner.scan(tldscanner.java:</code><code>106</code><code>)</code>

<code>    </code><code>at org.apache.jasper.servlet.jasperinitializer.onstartup(jasperinitializer.java:</code><code>103</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.plus.annotation.containerinitializer.callstartup(containerinitializer.java:</code><code>106</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.annotations.servletcontainerinitializerlistener.dostart(servletcontainerinitializerlistener.java:</code><code>107</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.util.component.abstractlifecycle.start(abstractlifecycle.java:</code><code>64</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.util.component.aggregatelifecycle.dostart(aggregatelifecycle.java:</code><code>81</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.server.handler.abstracthandler.dostart(abstracthandler.java:</code><code>58</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.server.handler.handlerwrapper.dostart(handlerwrapper.java:</code><code>96</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.server.handler.scopedhandler.dostart(scopedhandler.java:</code><code>115</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.server.handler.contexthandler.startcontext(contexthandler.java:</code><code>763</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.servlet.servletcontexthandler.startcontext(servletcontexthandler.java:</code><code>249</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.webapp.webappcontext.startcontext(webappcontext.java:</code><code>1242</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.server.handler.contexthandler.dostart(contexthandler.java:</code><code>717</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.webapp.webappcontext.dostart(webappcontext.java:</code><code>494</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.server.handler.handlerwrapper.dostart(handlerwrapper.java:</code><code>95</code><code>)</code>

<code>    </code><code>at org.eclipse.jetty.server.server.dostart(server.java:</code><code>282</code><code>)</code>

<code>    </code><code>at net.sourceforge.eclipsejetty.starter.embedded.jettyembeddedadapter.start(jettyembeddedadapter.java:</code><code>67</code><code>)</code>

<code>    </code><code>at net.sourceforge.eclipsejetty.starter.common.abstractjettylaunchermain.launch(abstractjettylaunchermain.java:</code><code>85</code><code>)</code>

<code>    </code><code>at net.sourceforge.eclipsejetty.starter.embedded.jettyembeddedlaunchermain.main(jettyembeddedlaunchermain.java:</code><code>42</code><code>)</code>

Access denied (java.lang.RuntimePermission getClas

在网上搜索一番后,找到了解决办法:

1. 查看工程使用的哪个jre

Access denied (java.lang.RuntimePermission getClas

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

Access denied (java.lang.RuntimePermission getClas

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

Access denied (java.lang.RuntimePermission getClas

4. 重启jetty,错误消失,结果正常。

至于为什么这样可以解决,网上还搜到相关说明。我暂时也没时间去深究,等以后有时间再说吧。