首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java真个高手来解答一下,很考技术

2011-12-11 
java真正高手来解答一下,很考技术在我的Applet中有一个方法open(),在该方法中调用了SelectDir(),我从网页

java真正高手来解答一下,很考技术
在我的Applet中有一个方法open(),在该方法中调用了SelectDir(),我从网页上的一个按钮调用open()时会出现异常。(如下) 请问原因是什么?怎样解决这个问题!
public int open()
  {
  dir = SelectDir();
  if(!dir.equals("SelectDir Cancel")){return 1 ;}
  else{return 0};  
  }

File loction = null; 
public String SelectDir()
  {
  JFileChooser fileChooser = new JFileChooser();
  fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
  int result = fileChooser.showOpenDialog(this);
  if (result == JFileChooser.CANCEL_OPTION) {
  loction = null;
  return "SelectDir Cancel";
  }
  else {
  loction = fileChooser.getSelectedFile();
  if(loction.isDirectory())
  {
  System.out.println("Dir name is :" + loction.toString());
  }
  return loction.toString() + "\\";
  }
  }

出现的异常报告:
java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
at sun.plugin.liveconnect.PrivilegedCallMethodAction.run(Unknown Source)
... 4 more
Caused by: java.lang.ExceptionInInitializerError
at sun.awt.shell.Win32ShellFolder2$ComTask.execute(Unknown Source)
at sun.awt.shell.Win32ShellFolder2.getFileSystemPath(Unknown Source)
at sun.awt.shell.Win32ShellFolder2.composePathForCsidl(Unknown Source)
at sun.awt.shell.Win32ShellFolder2.<init>(Unknown Source)
at sun.awt.shell.Win32ShellFolderManager2.getDesktop(Unknown Source)
at sun.awt.shell.Win32ShellFolderManager2.get(Unknown Source)
at sun.awt.shell.ShellFolder.get(Unknown Source)
at javax.swing.filechooser.FileSystemView.getRoots(Unknown Source)
at javax.swing.plaf.metal.MetalFileChooserUI.updateUseShellFolder(Unknown Source)
at javax.swing.plaf.metal.MetalFileChooserUI.installComponents(Unknown Source)
at javax.swing.plaf.basic.BasicFileChooserUI.installUI(Unknown Source)
at javax.swing.plaf.metal.MetalFileChooserUI.installUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JFileChooser.updateUI(Unknown Source)
at javax.swing.JFileChooser.setup(Unknown Source)
at javax.swing.JFileChooser.<init>(Unknown Source)
at javax.swing.JFileChooser.<init>(Unknown Source)
at AppletTest.SelectDir(AppletTest.java:2678)
at AppletTest.StartToRecord(AppletTest.java:2590)
... 14 more
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission shutdownHooks)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.Runtime.addShutdownHook(Unknown Source)


at sun.awt.shell.Win32ShellFolder2$ComTaskExecutor.<init>(Unknown Source)
at sun.awt.shell.Win32ShellFolder2$ComTaskExecutor.<clinit>(Unknown Source)
... 33 more


[解决办法]
网上查了一下PrivilegedActionException这个异常是特权操作抛出的异常.感觉应该在jre\lib\security\java.policy文件里改动一下.具体怎么改我也不太清楚.
不过我现在做的项目是暂时改成以下形式[java.policy]
grant { 
permission java.security.AllPermission;
};
[解决办法]
上面代码第五行写错了
其他的都能跑起来啊
[解决办法]
上面代码第五行写错了 
else{return 0};改为else{return 0;}
[解决办法]
呵呵真不好发现
[解决办法]
谢谢大家,一楼,我的安全权限上已经有了你给的设置哈。

二楼,三楼,那个只是笔误哈,不是问题的原因

四楼,确实很麻烦
[解决办法]
晕了
[解决办法]
应该是applet的安全设置问题不允许你那些操作吧,给applet签下名应该就解决了
[解决办法]
最近也在搞applet的访问本地资源的权限问题,找了2天,刚好解决了,哈哈,便宜你小子啦


场景:test.jar:内含待签名的java小程序

结果:签名后,客户端能自动下载java小程序,且java小程序能访问客户端的任何资源

 

步骤:

(1) 将java小程序打包

jar cvf test.jar test.class

(2) 生成名为chinani.store的密钥库,别名为chinani

keytool -genkey -keystore chinani.store -alias chinani

密码:123456 (根据需要自己输入)

以下根据需要输入,最后确认:y

(3) 导出chinani.cer数字证书

keytool -export -keystore chinani.store -alias chinani -file chinani.cer

密码:123456 (根据需要自己输入)

(4) 对test.jar文件进行签名

jarsigner -keystore chinani.store test.jar chinani

密码:123456 (根据需要自己输入)


http://dev.csdn.net/article/23/23971.shtm
[解决办法]
System.getSecurityManager()
[解决办法]
Applet权限问题,给你个网站,自己看吧,里面那个Database Access by Applets(JDBC,Socket,,看你用的是哪个吧):

http://java.sun.com/developer/onlineTraining/Programming/BasicJava1/dba.html
[解决办法]
up
[解决办法]
搞applet搞么事阿,搞applet还不如搞flash
我从第一眼看到applet就不爽

热点排行