【发布时间】:2016-02-16 15:58:44
【问题描述】:
我们有时会从客户那里收到这个奇怪的错误(自动地,直到现在还没有填写用户报告),我们都无法理解它。用户在 Win7 机器上启动了我们的 Swing Java-Web-Start “胖客户端”,最终使用了一些应该生成 PDF 文档的操作(使用一个古老的、修改过的 Apache FOP 版本),最终得到了这个错误。到目前为止,它在我们这边是不可重现的。 Google 在这方面也没有提供帮助。
最大的问题是,当需要 awt dll 来激活导致错误的操作时,怎么会丢失 awt dll?
有什么东西正在卸载 awt dll 吗?堆栈跟踪几乎总是相同的,我们没有发现任何证据表明这之前有一些其他错误。这可能是未记录的先前本机错误的结果吗?
编辑: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;
}
}
);
// ...
}
【问题讨论】:
-
我认为还有一些其他缺失的 dll/lib。你能要求你的客户重新安装jdk吗?
-
我终于得到了热线的回复。没有客户报告此错误,这基本上意味着他们要么没有看到它,要么通过简单的重新启动应用程序来解决它(我们的客户将无法/不允许自己重新安装 Java...)。
-
我们从我们的一位用户那里得到了同样的错误报告,但没有任何线索:josm.openstreetmap.de/ticket/13973您当时是否向 Oracle 提交了错误报告?
-
@vip 根据经验,不能“重现”且没有“测试用例”的错误报告几乎没有受到关注(无处不在,不仅仅是在 Oracle),所以我必须承认我没有麻烦向 Oracle 发送报告。
标签: java swing awt apache-fop