我正在尝试从我的应用程序中调用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)
答案 0 :(得分:1)
你可以重新检查你用来运行它的java吗?尝试从64位Java加载32位dll时通常会发生此错误。 jdic确实适用于64位Windows 7和32位java。