在NT机器上运行J6SE应用程序

时间:2020-03-06 14:54:58  来源:igfitidea点击:

我需要运行一个Java应用程序,我们正在尝试将其移植到NT盒上的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可执行文件移动到名称中没有空格的另一个目录,该问题仍然存在。

p.s.
我知道,我应该升级,但是这取决于我或者我的公司,这是一个与我们合作的非常巨大的巨型公司,他们打算将新台币再保留5年。

解决方案

Java SE 6至少需要Windows 2000。

如果我们未使用GUI,例如AWT,Swing或者SWT,则可以尝试以无头模式启动应用程序。有关更多信息,请参见http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/。要以无头模式启动Java,请使用java -Djava.awt.headless = true

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

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

不能做除非我们在NT盒上安装Windows2000,否则不要这样做。这是因为J6SE的awt.dll在Windows操作系统的一部分(链接到kernel.dll等)的User32.dll中使用了新方法。使用dll依赖项沃克,自己看看。
另一种可能的解决方案是稍微更改OpenJDK以使用Windows NT中可用的其他方法。