我正在尝试使用 Java 中的默认 Windows 浏览器打开一个 URL。不幸的是,我不能使用 Desktop 类实用程序,因为代码必须与 1.5 兼容。
作为一种解决方案,我使用本机方法调用 ShellExecute:
public class ShellExec {
public native int execute(String document);
{
System.loadLibrary("HSWShellExec");
}
public static void main(String args[]) throws IOException {
new ShellExec().execute("http://www.google.com/");
}
}
我将 DLL 文件放在显然包含在 java.library.path 中的 Eclipse 项目根目录中。
如果 ShellExec 在默认包中,一切都可以正常工作,但是如果我将它移动到任何其他包中,本机调用将失败,并显示:
Exception in thread "main" java.lang.UnsatisfiedLinkError: apackage.ShellExec.execute(Ljava/lang/String;)I
at apackage.ShellExec.execute(Native Method)
at apackage.ShellExec.main(ShellExec.java:13)
有人知道为什么吗?我正在使用来自http://www.heimetli.ch/shellexec.html的 DLL
谢谢
..稍后编辑:
最终,这个类和其他类将成为 Eclipse RCP 应用程序中的实用程序类,所有外部 DLL 都将放置在 java.library.path 指向的公共 lib 文件夹中。可以看到 DLL,但我得到的错误类型与上面的简单示例相同。