1

我试图从我的应用程序中调用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 年出现。

我知道 Java 6 中包含 JDIC 的某些部分,例如 Desktop,但文件关联似乎并非如此。

如果没有,是否有任何(希望是跨平台的)管理文件关联的替代方案?我尝试了一些仅适用于 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)
4

1 回答 1

1

你能重新检查你用来运行它的java吗?该错误通常发生在尝试从 64 位 java 加载 32 位 dll 时。jdic 确实在 64 位 Windows 7 和 32 位 java 上为我们工作。

于 2011-01-10T02:04:13.900 回答