Java BrowserLauncher抛出InvocationTargetException

时间:2009-04-06 22:59:39

标签: java exception

我正在使用BrowserLauncher2库从我的Swing应用程序打开用户的默认Web浏览器,但它引发了一个非常令人困惑的例外:

public static void openURL(String url) {
        try{
            BrowserLauncher launcher = new BrowserLauncher();
            launcher.openURLinBrowser(url);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

Exception:

edu.stanford.ejalbert.exception.BrowserLaunchingExecutionException: java.lang.reflect.InvocationTargetException
    at edu.stanford.ejalbert.launching.macos.MacOs3_1BrowserLaunching.openUrl(MacOs3_1BrowserLaunching.java:61)
    at edu.stanford.ejalbert.BrowserLauncherRunner.run(BrowserLauncherRunner.java:136)
    at java.lang.Thread.run(Thread.java:613)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at edu.stanford.ejalbert.launching.macos.MacOs3_1BrowserLaunching.openUrl(MacOs3_1BrowserLaunching.java:58)
    ... 2 more
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission canOpenURLs)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
    at java.security.AccessController.checkPermission(AccessController.java:427)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at com.apple.eio.FileManager.openURL(FileManager.java:229)
    at com.apple.mrj.MRJPriv.openURL(MRJPriv.java:255)
    at com.apple.mrj.MRJFileUtils.openURL(MRJFileUtils.java:206)
    ... 7 more

4 个答案:

答案 0 :(得分:1)

您正在使用SecurityManager集运行您的应用程序。 AccessControlContext(a.k.a。acc)中的某些代码没有所需的权限。可能代码是您的应用程序代码。

答案 1 :(得分:1)

InvocationTargetException总是包装另一个异常,这是在通过反射调用方法或构造函数时引起的。要解决您的问题,您需要查看其下的异常,正如Tom Hawtin指出的IllegalAccessExceptionSecurityManager而被抛出。

答案 2 :(得分:0)

首先,BrowserLauncher不支持Mac OS< 10.2。

此外,在MacOS上,BrowserLauncher启动默认浏览器,无法定位特定浏览器。您可以尝试更改计算机上的默认浏览器,看看是否有帮助。显然,这可以通过以下方式完成: 启动Safari - >选择首选项 - >在“常规”选项卡中,找到“默认”Web浏览器。

答案 3 :(得分:0)

我通过我的applet通过BrowserLauncher2获取AccessControlExceptions。您的情况可能类似,因为您使用SecurityManager运行应用程序。

我通过使用我的证书签署BrowserLauncher2 jar解决了我的问题。如果您的用户接受您的证书,则BrowserLauncher应具有完成其工作所需的权限。

相关问题