【问题标题】:Running a J6SE app on an NT box在 NT 机器上运行 J6SE 应用程序
【发布时间】:2010-09-14 05:26:04
【问题描述】:

我需要在 NT 机器上运行一个 Java 应用程序,我们正试图将它移植到 Java 6。

我设法在其上运行 java 5(虽然不受官方支持),但是当我尝试运行 java 6 时出现以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jre1.6.0_05\bin\awt.dll: The specified procedure could not be found
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at sun.security.action.LoadLibraryAction.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.awt.NativeLibLoader.loadLibraries(Unknown Source)
    at sun.awt.DebugHelper.<clinit>(Unknown Source)
    at java.awt.EventQueue.<clinit>(Unknown Source)
    at javax.swing.SwingUtilities.invokeLater(Unknown Source)
    at ui.sequencer.test.WindowTest.main(WindowTest.java:136)

有人知道如何解决这个问题吗?

即使我将 java 可执行文件移动到名称中没有空格的另一个目录,这种情况仍然存在。

附言 我知道,我应该升级,但这不取决于我或我的公司 - 这是我们合作的一个非常非常大的公司,他们打算再保留 NT 5 年。

【问题讨论】:

    标签: java nt windows-nt


    【解决方案1】:

    Java SE 6 requires 至少是 Windows 2000。

    【讨论】:

    • 我知道,但 java 5 也是如此,它仍然可以运行 (java.sun.com/j2se/1.5.0/system-configurations.html)。
    • 可能 NT 支持与 Windows98SE 和 ME 相同的 API,但 Java6 从列表中删除了这些。
    • Mich:仅仅因为一个版本的程序幸运地在不受支持的操作系统上运行,并不能保证下一个版本可以。 Java 6 进行了一些相当大的内部重写。正如 Partyzant 所说,基于旧 MS API 的操作系统已在 Java 6 中被删除,因此他们可能会清除这些依赖项。
    【解决方案2】:

    如果您没有使用 GUI,例如 AWT、Swing 或 SWT,您可以尝试以无头模式启动应用程序。请参阅http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/ 了解更多信息。要以无头模式启动 java,请使用 java -Djava.awt.headless=true

    它将处理 UnsatisfiedLinkError。我不知道这是否是唯一的障碍。

    【讨论】:

    • 谢谢,但这是一个摇摆应用程序。必须有头脑听到:-(
    【解决方案3】:

    好的,感谢所有观众以及@Roel Spiker 和@Partyzant 的回答。

    做不到。除非你在NT机器上安装windows2000。这是因为 awt.dll fr J6SE 在 User32.dll 中使用了新方法,它是 Windows 操作系统的一部分(链接到 kernel.dll 等)。使用 dll 依赖walker 自己看看。 另一种可能的解决方案是稍微改变 OpenJDK 以使用 Windows NT 中可用的其他方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多