gpt4 book ai didi

java - 带 Java applet 的 Web 浏览器发布 native 库

转载 作者:行者123 更新时间:2023-12-01 05:05:40 24 4
gpt4 key购买 nike

我有一个包含多个 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以在本地运行(互联网上的小程序根本不运行——还没有)。然后打开一个小程序,返回并尝试运行另一个 3D 小程序。

最佳答案

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

关于java - 带 Java applet 的 Web 浏览器发布 native 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717842/

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