gpt4 book ai didi

java - "java.lang.UnsatisfiedLinkError: no awt in java.library.path"正在运行 JWS Swing 应用程序

转载 作者:搜寻专家 更新时间:2023-11-01 03:34:29 34 4
gpt4 key购买 nike

我们有时会从客户那里得到这个奇怪的错误(自动,直到现在才填写用户报告),我们都无法理解它。用户在 Win7 机器上启动我们的 Swing Java-Web-Start“胖客户端”,最终使用一些应该生成 PDF 文档的操作(使用古老的、修改过的 Apache FOP 版本),并最终得到这个错误。到目前为止,它在我们这边是不可复制的。 Google 也没有在这方面提供帮助。

最大的问题是,当需要 awt dll 来激活导致错误的操作时,awt dll 怎么会丢失?

有什么东西正在卸载 awt dll 吗?堆栈跟踪几乎总是相同的,我们没有发现任何证据表明这之前有其他错误。这可能是未记录的先前 native 错误的结果吗?

编辑:PDF 生成在后台线程中运行,而阻塞的“等待”对话框会阻止用户关闭或以其他方式操作 UI。

java.lang.UnsatisfiedLinkError: no awt in java.library.path
at java.lang.ClassLoader.loadLibrary
at java.lang.Runtime.loadLibrary0
at java.lang.System.loadLibrary
at sun.java2d.cmm.lcms.LCMS$1.run
at java.security.AccessController.doPrivileged
at sun.java2d.cmm.lcms.LCMS.getModule
at sun.java2d.cmm.lcms.LcmsServiceProvider.getModule
at sun.java2d.cmm.CMMServiceProvider.getColorManagementModule
at sun.java2d.cmm.CMSManager.getModule
at java.awt.color.ICC_Profile.getInstance
at java.awt.color.ICC_Profile.getInstance
at org.apache.fop.pdf.PDFICCBasedColorSpace.setupsRGBColorProfile
at org.apache.fop.pdf.PDFICCBasedColorSpace.setupsRGBAsDefaultRGBColorSpace
at org.apache.fop.render.pdf.PDFRenderingUtil.addsRGBColorSpace
at org.apache.fop.render.pdf.PDFRenderingUtil.setupPDFDocument
at org.apache.fop.render.pdf.PDFDocumentHandler.startDocument
at org.apache.fop.render.intermediate.IFRenderer.startRenderer
at org.apache.fop.area.RenderPagesModel
at org.apache.fop.area.AreaTreeHandler.setupModel
at org.apache.fop.area.AreaTreeHandler
at org.apache.fop.render.RendererFactory.createFOEventHandler
at org.apache.fop.fo.FOTreeBuilder
at org.apache.fop.apps.Fop.createDefaultHandler
at org.apache.fop.apps.Fop
at org.apache.fop.apps.FopFactory.newFop
at org.apache.fop.apps.FopFactory.newFop
at ...
at javax.swing.SwingWorker$1.call
at java.util.concurrent.FutureTask.run
at javax.swing.SwingWorker.run
at ...
at java.util.concurrent.ThreadPoolExecutor.runWorker
at java.util.concurrent.ThreadPoolExecutor$Worker.run
at java.lang.Thread.run

编辑:我找到了导致错误的代码(在 grepcode.com 中):

/* the class initializer which loads the CMM */
static {
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction() {
public Object run() {
/* We need to load awt here because of usage trace and
* disposer frameworks
*/
System.loadLibrary("awt"); // HERE!
System.loadLibrary("lcms");
return null;
}
}
);
// ...
}

最佳答案

这可能不是 OP 错误的原因,但对于其他因其他原因而出现相同错误的人来说,这是一个问题。

如果在应用程序仍在运行时更新 Java 运行时环境的版本,则会发生此错误;例如如果它是通过 Windows 上的 MSI/EXE 安装程序或 yum/apt-get/etc 更新的。在 *nix 上。更新后,正在运行的 Java 应用程序正在寻找的 DLL (Windows) 或 SO (Linux/Unix) 可能在它知道的位置不再可用,因此找不到。

这更有可能出现在类 Unix 环境中,其中文件锁不一定能防止文件删除,而在服务器上,长期运行的服务只需要偶尔依赖这些 DLL 的特定功能。

在这种情况下,需要重新启动应用程序。

关于java - "java.lang.UnsatisfiedLinkError: no awt in java.library.path"正在运行 JWS Swing 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35437198/

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