Какие файлы нужны для запуска JDIC?
Я пытаюсь вызвать JDIC из своего приложения, но не могу запустить его. Какие файлы мне нужны и где? Из того, что я смог собрать с их сайта, мне в основном нужно поместить jdic.jar в classpath... однако есть также папка lib с jdic.jar немного другого размера и jdic_native_applet.jar, jdic_stub_unix.jar, jdic_stub_windows.jar и несколько папок, которые я собираю, являются файлами, специфичными для платформы.
Я получаю это исключение при создании экземпляра 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 64bit. Работает ли JDIC даже под Win7 (или 64-битной, хотя я использую 32-битную Java)? Я не вижу релиза после 2006 года и никакой активности в проекте после 2008 года... в то время как Win7 вышла в 2009 году.
Я знаю, что некоторые части JDIC, такие как Desktop, были включены в Java 6, однако это не относится к ассоциациям файлов.
И если это не так, есть ли (надеюсь, кроссплатформенные) альтернативы для управления ассоциациями файлов? Есть кое- что для Windows только то, что я попробовал, но для этого требуется запуск собственных команд с правами администратора, которые я не знаю, как получить, кроме просьбы пользователя запустить мое приложение от имени администратора, а затем использовать Runtime.exec()..,
Если нет альтернативы JDIC, мне интересно, удалось ли кому-нибудь хорошо обработать ассоциации файлов с кросс-платформенными установщиками?
ОБНОВЛЕНИЕ: ОК, понял часть этого... все из папки 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)
1 ответ
Можете ли вы перепроверить Java, который вы используете для запуска этого? Ошибка обычно возникает при попытке загрузить 32-битную DLL из 64-битной Java. JDIC работает для нас на 64-битной Windows 7 с 32-битной Java.