【问题标题】:Web browser with Java applet release native library带有 Java 小程序发布本机库的 Web 浏览器
【发布时间】:2012-10-03 22:35:29
【问题描述】:

我有一个包含多个 Java3D 小程序的网页,在 Ubuntu 上运行 Firefox 或 Chromium。我可以启动任何一个小程序,但是当我在浏览器中“返回”并尝试启动另一个 Java3D 小程序时,我得到了

java.lang.UnsatisfiedLinkError:Native Library /lib/libj3dcore-ogl.so already loaded in another classloader

我可以关闭网络浏览器并重新启动,然后我可以启动另一个小程序,但再次尝试启动另一个小程序会导致上述错误。

与 Web 浏览器相反,我可以在 Eclipse 中运行任意数量的 Java3D 小程序。 (Java 中惊人的重叠 OpenGL 窗口!)

有没有办法在另一个 Java3D 小程序运行后在浏览器中运行而无需重新启动浏览器?

注意:我有一种感觉,离开页面并不意味着小程序关闭,但就浏览器而言仍然在运行。也许是一个 Javascript 会在页面离开时强制小程序结束?

如果您想查看错误,请从以下位置下载 zip 文件

http://jat.sourceforge.net/node/24

解压并在 deploy 中打开 index.html 以在本地运行(Internet 上的小程序根本不运行 - 还没有)。然后打开一个小程序,返回并尝试运行另一个 3D 小程序。

【问题讨论】:

    标签: java ubuntu browser applet unsatisfiedlinkerror


    【解决方案1】:

    Ufff,这是 Java 安全性最严重的错误之一,问题很简单,当您打开页面时,您的小程序会加载本机库(我在浏览器中使用 Morena 进行扫描)然后一切正常,但是当您刷新时,您的小程序尝试重新加载本机库,但浏览器将小程序保存在缓存中(这样就不需要再次下载),然后本机已经加载,产生安全问题,原因您无法加载Native Resource 两次(是的,你的小程序它只做一个,但每次加载小程序时都会调用它,但类加载器只在第一次创建)。 您没有解决方案... MUAJAJAJAJA!,不,真的,您可以添加您的库(使用本机资源的库)并将它们直接添加到您的 java/extensions 中,但是小程序需要一些额外的步骤而不是仅仅加载小程序。 我猜你已经烧掉了你的罐子,因为它需要在小程序中运行本机代码,但直到今天我无法跳过使用本机的小程序的刷新问题,只将它们添加到扩展文件夹

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 2017-10-13
      • 2018-02-16
      • 2012-01-11
      • 2013-03-02
      • 2014-02-19
      相关资源
      最近更新 更多