JDICを私のアプリケーションから呼び出そうとしていますが、実行することができません。どんなファイルが必要なの?自分のサイトから収集したことから、基本的にはjdic.jarをクラスパスに入れる必要があります...しかし、少し異なるサイズのjdic.jarを持つlibフォルダとjdic_native_applet.jar、jdic_stub_unixもあります。 jar、jdic_stub_windows.jarといくつかのフォルダは、プラットフォーム固有のファイルです。JDICはどのファイルを実行する必要がありますか?
AssociationServiceをインスタンス化するとき、私はこの例外を取得:
java.lang.ClassNotFoundException: org.jdesktop.jdic.filetypes.internal.AppAssociationReaderFactory_windows
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at org.jdesktop.jdic.filetypes.AssociationService.<init>(Unknown Source)
at QuickTest.main(QuickTest.java:101)
私は最後の「公式」リリース、最後のアルファリリースを試してみました。私はJava 6とWin7 64ビットを実行しています。 JDICはWin7(または32ビットJavaを使用していますが、64ビット)でも動作しますか? 2006年以降のリリースは見られず、2009年にはWin7が登場しました。
デスクトップのようなJDICの部分はJava 6に含まれていましたが、ファイルの関連付けの場合のようです。
もしそうでなければ、ファイルの関連付けを管理するための(うまく言えばクロスプラットフォームの)代替手段がありますか?私が試したthings for Windows onlyがいくつかありますが、それは、管理者として私のアプリを実行してからRuntime.exec()を使用するように頼む以外に、プルする方法がわからない管理者権限でネイティブコマンドを実行する必要があります...
JDICに代わるものがない場合、誰もがクロスプラットフォームインストーラとのファイルの関連付けを処理できたら興味がありますか?
更新:OK、分かった部分... Windowsフォルダのすべてがルートフォルダにある必要があります。しかし、今私は戻って私の元の質問に私をもたらし、この例外を取得:
Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\Sources\TheWorkspace\Test\jdic.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1778)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
at org.jdesktop.jdic.init.JdicManager$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at org.jdesktop.jdic.init.JdicManager.loadLibrary(Unknown Source)
at org.jdesktop.jdic.filetypes.internal.WinRegistryWrapper.<clinit>(WinRegistryWrapper.java:36)
at org.jdesktop.jdic.filetypes.internal.WinRegistryUtil.isSubKeyExist(WinRegistryUtil.java:192)
at org.jdesktop.jdic.filetypes.internal.WinRegistryUtil.isFileExtExist(WinRegistryUtil.java:910)
at org.jdesktop.jdic.filetypes.internal.WinRegistryUtil.isFileExtExist(WinRegistryUtil.java:939)
at org.jdesktop.jdic.filetypes.internal.WinAppAssociationReader.isFileExtExist(WinAppAssociationReader.java:163)
at org.jdesktop.jdic.filetypes.AssociationService.getFileExtensionAssociation(Unknown Source)
at QuickTest.main(QuickTest.java:103)
はい、正しいです。私は32bit JVMを使っていると思っていたが、そうは思わなかった。過去の例外は... – Domchi