繁体   English   中英

无法在32位JVM上加载64位SWT库(即使我下载了32位SWT)

[英]Cannot load 64-bit SWT libraries on 32-bit JVM (even though I downloaded 32-bit SWT)

我目前正在64位Windows 7计算机上进行开发。 我的机器上安装了64位的JRE7和32位的JRE7。 我使用的是Eclipse 64位版本,并且已配置Window-首选项-Java-已安装JRE以使用32位JRE7作为我要测试的默认JRE。 还安装了32位JDK,目前正在使用它进行测试。

我仔细检查并确保确实使用了SWT 32位Windows,但是在编译期间仍然抛出“无法在32位JVM上加载64位SWT库”错误。

该错误清楚地表明Eclipse确实在使用JDK7-32位,但出于某种原因,SWT库( http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/R-4.3- 201306052000 / swt-4.3-win32-win32-x86.zip )并非完全32位。

有任何想法吗? 任何解决方法?

仅供参考,将JRE切换到64位可以很好地编译程序,但是我希望我的应用程序可以在32位和64位上运行。

这是完整的例外:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot load 64-bit SWT libraries on 32-bit JVM
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:260)
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:240)
    at org.eclipse.swt.internal.C.<clinit>(C.java:21)
    at org.eclipse.swt.widgets.Widget.<clinit>(Widget.java:107)
    at Test.Application.<init>(Application.java:19)a
    at Test.Application.main(Application.java:29)

SWT使用插件片段来控制此操作-有32位片段和64位片段(以及Mac,Linux等的片段)。 确保将启动配置设置为使用适当的片段,具体取决于要在其上运行的JVM。

请注意,仅包含“两个”插件片段将不起作用,因为它们将同时尝试加载并引起问题。

同样, 相关问题可能很有用。

另一个想法是深入研究loadLibrary函数-从我记得它的工作原理来看,它从某个地方的临时位置查找SWT dll的缓存版本,因此它可能使用的是缓存的64位dll而不是正确地从罐子中取出32位的包装。 在这种情况下,删除缓存的文件可能会解决该问题。

不过,最简单的解决方案可能只是拥有两个单独的Eclipse实例:一个安装程序运行32位,一个安装程序运行64位。 这样,您就不必担心来回切换,也不必担心配置问题。

“我使用的是Eclipse 64位版本,并配置了Window-Preferences-Java-安装的JRE以使用32位JRE7作为我要测试的默认JRE。”

如何配置Eclipse以指向并使用完整的32位jdk代替项目的jre?

在您的Eclipse中,单击

运行->外部工具->外部工具配置...

在“ JRE”选项卡中,选择选项

在与工作空间相同的JRE中运行。


这为我解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM