java - JDIC需要运行哪些文件?

标签 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 年之后该项目没有任何 Activity ......而 Win7 是在 2009 年出现的。

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

如果没有,是否有任何(希望是跨平台的)替代方案来管理文件关联?有一些things for Windows only我尝试过,但这需要以管理员权限运行 native 命令,除了要求用户以管理员身份运行我的应用程序然后使用 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)

最佳答案

你能重新检查一下你用来运行这个的java吗?该错误通常发生在尝试从 64 位 java.util.dll 加载 32 位 dll 时。 jdic 确实可以在带有 32 位 java 的 64 位 Windows 7 上为我们工作。

关于java - JDIC需要运行哪些文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4641698/

相关文章:

c++ - 在 C++ 中直接访问文件?

Windows:与批处理文件建立文件关联

Eclipse文件关联: displaying images

java - 如何使用 JAXB Moxy 解码具有未命名字段的 JSON

java - 除了 JMF 之外,在 Java 中播放媒体的其他方式

java - UI性能:repeat in JSF2/Mojara

ios - 在 xcode 上运行 ionic 跨平台项目时出现错误

java - 在字符串数组中查找大写字母并将其提取出来

c++ - 利用 SSE 和其他 CPU 扩展

java - 如何在启动时向我的 java 应用程序(如 .exe)传递文档的路径?