如何用openjdk在浏览器上运行Java小程序(Applet)

最近工作中遇到了这个问题,在这里写一篇博客记录一下。

目录

基础介绍

需要解决什么问题?

applet是什么?

icedtea是什么?

icedtea的版本选择

浏览器选择

如何判断安装成功?

测试一下

分析


基础介绍

需要解决什么问题?

oracle8的jre里自带一个插件libnpjp2.so,这个插件可以用来开发Java applet。

不过oracle8的jre只提供amd版本,不提供arm版本,导致使用了oracle的jre开发的applet的业务系统无法在arm上运行,本次解决的就是这个问题。

ps:libnpjp2.so只在oracle的jre里有,jdk里没有,原因不明

applet是什么?

Java applet是一个已经废弃的java 技术,可以通过applet在浏览器上显示图像等内容。

icedtea是什么?

icedtea是一个openjdk开发的用于运行applet的组件,可以作为libnpjp2.so的替代。


icedtea的版本选择

icedtea的下载地址在这里:icedtea-web package : Ubuntu

里面2004的只有1.8版本,不过这个版本是无法使用的,因为icedtea从1.7版本就删除了对浏览器上applet的支持。

所以这里我们选择1804里1.6.2-3.1ubuntu3这个版本。

浏览器选择

firefox自从52版本之后就放弃了对applet的支持,所以我们这里选择52及以下的版本firefox。

或者这里可以选择一些国产浏览器,奇安信或者360,这些浏览器保留了对applet的支持。

如何判断安装成功?

安装完成后如果在浏览器插件页面找到了icedtea字样的插件,说明安装成功。

之后需要安装openjdk-8-jre作为启动环境,因为applet的启动需要依赖jre。

sudo apt install openjdk-8-jre

测试一下

测试网页在这里:Applet Demo

里面有一大堆applet的demo,选哪个都行。

测试了之后会发现,applet是无法正常显示的,这个时候我们可以打开icedtea的debug开关,查看一下日志信息。

分析

先打开icedtea的设置页面,然后按照红字进行勾选,然后关闭浏览器重新打开applet的demo,即可看到日志。

itweb-settings

通过分析日志发现日志最终会卡在plugin_callback,应该是没有收到回应导致的无法显示。

不过用同样的jdk,icedtea和浏览器,在1804上可以正常运行,所以这是OS导致的问题

最终通过重新编译icedtea(在1604上)打印报错信息确认了是glib的接口阻塞了,因此考虑在2004上降级glib。

直接装glib会有依赖问题,因此直接替换了相关的so库。

不过换库会导致浏览器无法启动,需要将libgtk3的版本也降到1804。

libgtk3没有依赖问题,可以直接装。

装完applet就可以正常启动啦!

ps:glib的库记得替换回来,不然关机之后就打不开了。

另一种方法

最近发现运行applet还有另一种方法,就是使用浏览器的插件“cheerp applet runner”。

cheerp applet runner

安装这个插件后重新打开使用applet的网页,然后点击这个插件,就可以看到applet正常运行。

该插件非商业使用免费。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值