Я пытаюсь вызвать JDIC из моего приложения, но я не могу заставить его работать. Какие файлы мне нужны и где? Из того, что я смог собрать со своего сайта, мне в основном нужно поместить jdic.jar в classpath ... однако есть также папка lib с jdic.jar с немного другим размером и 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 64bit. Является ли JDIC даже работать под Win7 (или 64-битным, хотя я использую 32-битную Java)? Я не вижу выхода после 2006 года, и никакой активности в проекте после 2008 года ... пока Win7 не пришла в 2009 году.
Я знаю, что части JDIC, такие как Desktop, были включены в Java 6, однако это не похоже, связаны с ассоциациями файлов.
И если это не так, существуют ли (возможно, кросс-платформенные) альтернативы для управления ассоциациями файлов? Есть некоторые things for Windows only, которые я пробовал, но для этого требуются запущенные собственные команды с правами администратора, которые я не знаю, как тянуть, помимо запроса пользователя запускать мое приложение в качестве администратора, а затем использовать 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)
Да, вы правы. Я думал, что использую 32-битную JVM, но похоже, что я не был. Получил прошлое исключение ... – Domchi