gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:10:56 25 4
gpt4 key购买 nike

我目前正在 64 位 Windows 7 计算机上进行开发。我的计算机上安装了 JRE7 64 位和 JRE7 32 位。我使用的是 Eclipse 64 位版本,并配置了 Window - Preferences - Java - Installed JRE,以使用 JRE7 32 位作为我要测试的默认 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 位 o.O...

有什么想法吗?有什么解决方法吗?

仅供引用,将 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。

请注意,仅包含“两个”插件片段是行不通的,因为它们都会尝试加载并导致问题。

此外,this相关问题可能有用。

另一个想法是深入研究 loadLibrary 函数 - 据我所知,它是如何工作的,它从某个临时位置查找 SWT dll 的缓存版本,因此它可能使用缓存的 64 位 dll,而不是从 jar 中正确解压 32 位 dll。在这种情况下,删除缓存的缓存可能会解决该问题。

最简单的解决方案可能只是拥有两个单独的 Eclipse 实例:一个设置运行 32 位,一个设置运行 64 位。这样您就不必担心来回切换,也不必费力地进行配置。

关于java - 无法在 32 位 JVM 上加载 64 位 SWT 库(即使我下载了 32 位 SWT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21976939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com