Я пытаюсь вызвать 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)