JDIC需要运行哪些文件?

时间:2011-01-09 20:51:09

标签: java cross-platform file-association jdic

我正在尝试从我的应用程序中调用JDIC,但我无法让它运行。我需要哪些文件以及在哪里?从我从他们的网站收集的内容来看,我基本上需要将jdic.jar放在类路径中...但是还有一个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)

我已尝试过最后一次“官方”发布和最后一次alpha发布。我正在运行Java 6和Win7 64位。 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 个答案:

答案 0 :(得分:1)

你可以重新检查你用来运行它的java吗?尝试从64位Java加载32位dll时通常会发生此错误。 jdic确实适用于64位Windows 7和32位java。