2012-03-06 63 views
1

我製作了一個名爲test.jar的.jar文件,並試圖將其放到名爲login.html(全部本地)的網頁上。在applet標籤中,我把mysqlconnector.jar和test.jar放在歸檔部分。mySQL的Java Applet問題

當我嘗試使用運行小程序:小程序查看「文件:/// C:/test/login.html」小程序加載,但是當我嘗試登錄,然後點擊OK我收到以下錯誤

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 2012-03-06 19:05:16

+0

用於applet和JWS應用程序的安全沙箱。是相同的,只使用政策略有差異。差異的例子是1)即使是已簽名的applet也不能調用'System.exit(n)'2)JWS應用程序。不僅擁有「全權」和沙盒,而且還有另一個級別。否則,+1。避免使用策略文件,它們僅適用於神祕的情況(如開發,儘管我在版本中籤名Jar,如果需要的話)。 – 2012-03-06 19:28:38

+0

@AndrewThompson - JNLP確實沒有給予OP足夠的權限,無需簽名即可連接到數據庫。我會更新我的答案。 – Perception 2012-03-06 19:59:14