java - 如何在 xp 和 windows 7 上运行 SWT 应用程序

标签 java jar jvm swt

我用 SWT 制作了一个应用程序并导出它的 jar,然后我就可以运行它了。 我的机器是(win xp)。

和我的Java版本:java版本“1.6.0_39” Java(TM) SE 运行时环境(版本 1.6.0_39-b04) Java HotSpot(TM) 客户端虚拟机(版本 20.14-b01,混合模式,共享)

然后我尝试在 Windows 7 机器上运行我的 jar : java版本“1.7.0_17” Java(TM) SE 运行时环境(版本 1.7.0_17-b02) Java HotSpot(TM) 64 位服务器 VM(内部版本 23.7-b01,混合模式)

但是这台机器无法启动该应用程序。 然后我尝试使用以下命令在 CMD 上运行 Jar: java -jar myapp.jar 然后我得到了异常(exception):`

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)Caused by: java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
    at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
    at projectPackage.G.init(G.java:258)
    at projectPackage.G.main(G.java:225)
    ... 5 more`

并且我的 Eclipse 使用的是 jre6

那么我怎样才能生成在两台机器上工作的 Jar 呢?

预先感谢您的宝贵时间

最佳答案

嗯,这个异常(exception)是不言自明的:

UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM

要让你的 jar 在 32 位和 64 位上运行,你应该看看这个答案:

Create cross platform Java SWT Application

您基本上必须包含您计划将应用程序部署到的所有平台的 swt.jar,并且给定的代码将在运行时确定要使用哪个 .jar 版本。

<小时/>

一个快速但肮脏的修复方法是打开您的 jar 文件并将包含的 swt.jar (32 位) 与其他版本 (64 位) 交换。但是,这会将您的应用限制为 64 位。

<小时/>

结论:

  • 要么为不同的操作系统和位版本创建单独的 jar(每个仅包含一个 swt.jar)
  • 或者创建一个 jar 来管理所有这些(包含所有 swt.jar)

关于java - 如何在 xp 和 windows 7 上运行 SWT 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18612691/

相关文章:

java - 对于 Linux 上的 Windows 文件路径,Path.startsWith 返回 false

java - Spring 数据 Neo4J 4.0.0 : BeforeSaveEvent not firing?

java - 如何在 java 中执行 .JAR 文件

java - 如何避免对库模块中的公共(public)字段进行 lint 检查?

java - iinc在Java中是原子的吗?

java - 按任意键继续不工作?

java - splunk检查消息是否包含特定字符串

java - Netbeans:如何知道我当前正在查看什么 JAR

java - JVM 和 JRE 之间的区别

java - 创建 Lambda 函数实例