天天看點

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,錯誤消失,結果正常。

至于為什麼這樣可以解決,網上還搜到相關說明。我暫時也沒時間去深究,等以後有時間再說吧。