2011-12-01 42 views
1

连接到SQL数据库,我正在连接到存储在同一个Web服务器上的数据库的小程序,当我在Eclipse的applet查看测试代码,它连接。问题是,当我试图在Eclipse外部运行它(网络服务器或本地的),我得到这个错误:如何从applet的

Exception in thread "AWT-EventQueue-2" java.lang.ExceptionInInitializerError 
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:286) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at com.j_ctrl.MovePanel.connectDB(MovePanel.java:569) 
at com.j_ctrl.MovePanel.showHighScore(MovePanel.java:558) 
at com.j_ctrl.MovePanel.enterPress(MovePanel.java:544) 
at com.j_ctrl.MovePanel$1.keyPressed(MovePanel.java:163) 
at java.awt.Component.processKeyEvent(Unknown Source) 
at java.awt.Component.processEvent(Unknown Source) 
at java.awt.Container.processEvent(Unknown Source) 
at java.awt.Component.dispatchEventImpl(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source) 
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source) 
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source) 
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source) 
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source) 
at java.awt.Component.dispatchEventImpl(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$000(Unknown Source) 
at java.awt.EventQueue$1.run(Unknown Source) 
at java.awt.EventQueue$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue$2.run(Unknown Source) 
at java.awt.EventQueue$2.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 

Caused by: java.security.AccessControlException: access denied  (java.util.PropertyPermission file.encoding read) 
at java.security.AccessControlContext.checkPermission(Unknown Source) 
at java.security.AccessController.checkPermission(Unknown Source) 
at java.lang.SecurityManager.checkPermission(Unknown Source) 
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source) 
at java.lang.System.getProperty(Unknown Source) 
at com.mysql.jdbc.StringUtils.<clinit>(StringUtils.java:70) 
... 39 more 

有什么特别的需要,以完成从一个连接到SQL数据库小程序吗? 这里是处理连接的代码:我改变了用户名,密码和数据库这里

private void connectDB(){ 
    try{ 
     String driverName = "com.mysql.jdbc.Driver"; 
     Class.forName(driverName); 
     String url = "jdbc:mysql://localhost/database"; 
     String user = "user"; 
     String pass = "pass"; 
     connection = DriverManager.getConnection(url, user, pass); 
     System.out.println("Connected"); 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
} 

,但在我的代码,他们是正确的。

编辑

由于连接到SQL服务器没有工作(我想它托管在其他主机上),我已经结束了改变我访问数据库的方式。该小应用程序打开一个到主机上的PHP文件的连接,该文件又连接到数据库。无论哪种方式,这是更安全的。

回答

1

这是正在由小应用程序的安全模型引起的。这里有一个很好的文章总结了解决此问题的方式主要有两种 - 要么签署applet或使用策略文件。让我们知道,如果你还在试图其中之一后遇到的问题:

http://www.coderanch.com/how-to/java/HowCanAnAppletReadFilesOnTheLocalFileSystem

+0

我没有特别喜欢的政策文件提及到的新手,因为它散发出真实世界的小程序完全不切实际的方式,但因为Java牧场说明具有通道解释下侧,我决定让它这次滑动。 –

+0

上说CodeRanch那和签名Applet“只能进行网络连接回从他们分别担任主”,但使用我的签名Applet我无法连接到主机。 – JCtrl

1

您需要登录您的小程序。 Here是一些很好的文档。

+1

很好的回答,尽管你可能想在甲骨文换出太阳链接[这一个](http://docs.oracle.com/javase/tutorial/deployment/jar/signing.html)。 –