2012-03-06 4 views
1

test.jar이라는 .jar 파일을 만들고 login.html (모두 로컬)이라는 웹 페이지에 넣으려고합니다. 애플릿 태그 안에 mysqlconnector.jar과 test.jar을 아카이브 섹션에 넣었다.Java Applet with mySQL

내가 사용하는 애플릿을 실행하려고하면 : 애플릿 뷰어를 "파일 : /// C : /test/login.html"애플릿로드하지만 난 로그인 나는 다음과 같은 오류가 확인을 클릭 할 때

Exception in thread "AWT-EventQueue-1" java.lang.ExceptionInInitializerError 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java 
    :286) 
    at java.sql.DriverManager.getConnection(DriverManager.java:582) 
    at java.sql.DriverManager.getConnection(DriverManager.java:185) 
    at staffDatabase.queryStaffID(staffDatabase.java:76) 
    at searchStaff.readFromLogin(searchStaff.java:14) 
    at loginFrame$1.actionPerformed(loginFrame.java:65) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:19 
    95) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav 
    a:2318) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel 
    .java:387) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242 
) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL 
istener.java:236) 
    at java.awt.Component.processMouseEvent(Component.java:6263) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
    at java.awt.Component.processEvent(Component.java:6028) 
    at java.awt.Container.processEvent(Container.java:2041) 
    at java.awt.Component.dispatchEventImpl(Component.java:4630) 
    at java.awt.Container.dispatchEventImpl(Container.java:2099) 
    at java.awt.Component.dispatchEvent(Component.java:4460) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574 
) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) 

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) 
    at java.awt.Container.dispatchEventImpl(Container.java:2085) 
    at java.awt.Component.dispatchEvent(Component.java:4460) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre 
ad.java:269) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread. 
java:184) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre 
ad.java:174) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 
Caused by: java.security.AccessControlException: access denied (java.util.Proper 
tyPermission file.encoding read) 
    at java.security.AccessControlContext.checkPermission(AccessControlConte 
xt.java:323) 
    at java.security.AccessController.checkPermission(AccessController.java: 
546) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
    at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:12 
85) 
    at java.lang.System.getProperty(System.java:650) 
    at com.mysql.jdbc.StringUtils.<clinit>(StringUtils.java:70) 
    ... 30 more 

가 나는

Caused by: java.security.AccessControlException: access denied (java.util.Proper 
tyPermission file.encoding read) 

가의 policytool에서 읽기 권한이 부족한 때문이다 제안 몇 가지 다른 웹 사이트에서 검토 한 결과,하지만 난 이미 모든 권한을 넣어 가지고이 어떤 차이를 만들어 없다.

도움이 될 것입니다. 지금까지 행운이없이 도처에 보았습니다, 고마워요!

답변

2

정책 파일을 변경해도 차단되지는 않지만 여전히 sign the applet이 필요합니다. JNLP을 통해 앱을 배포하도록 선택할 수도 있습니다. 이렇게하면 더 높은 기본 사용 권한 집합이 생기지 만, 수행중인 작업 (소켓 사용 권한 요청)에 대해서는 응용 프로그램에 서명해야합니다.

+1

서명해야 함 – Alfabravo

+0

애플릿 및 JWS 앱에 사용되는 보안 샌드 박스입니다. 사용 된 정책에 약간의 차이점 만 있지만 동일합니다. 차이점의 예는 1) 서명 된 애플릿이'System.exit (n)'을 호출 할 수 없다. 2) JWS 앱. 'all-permissions'와 sand-boxed뿐만 아니라 사이에 또 ​​다른 레벨을 가지고있다. 그렇지 않으면 +1. 정책 파일을 피하십시오. 필요하다면 빌드에서 Jars에 서명을하지만, 난해한 상황 (예 : 개발과 같은)에만 유용합니다. –

+0

@AndrewThompson - JNLP는 OP가 서명하지 않고 데이터베이스에 연결할 수있는 권한을 실제로 부여하지 않습니다. 내 대답을 업데이트 할게. – Perception