2011-01-09 2 views
0

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

ответ

1

Вы можете перепроверить на Java, который вы используете для запуска этого? Ошибка обычно возникает при попытке загрузить 32-разрядную dll из 64-разрядной Java. jdic работает для нас на 64-битной Windows 7 с 32-разрядной Java.

+0

Да, вы правы. Я думал, что использую 32-битную JVM, но похоже, что я не был. Получил прошлое исключение ... – Domchi

Смежные вопросы