在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中可用的其他方法。