Java で、デフォルトの Windows ブラウザーで URL を開こうとしています。残念ながら、コードは 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/");
}
}
明らかに java.library.path に含まれているEclipseプロジェクトルートにDLLファイルを配置しました。
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 は表示されますが、上記の単純な例と同じタイプのエラーが発生します。