如何ubuntu2004上运行Java小程序(Applet网页插件)

本文讲述了在OracleJRE的AMD版本不支持ARM的情况下,如何通过使用IcedTea替代libnpjp2.so并在Firefox等浏览器上配置,解决JavaApplet在ARM设备上运行的问题,以及后续遇到的Glib接口阻塞和CheerpAppleTrunner插件的解决方案。
摘要由CSDN通过智能技术生成

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

目录

基础介绍

需要解决什么问题?

applet是什么?

icedtea是什么?

icedtea的版本选择

浏览器选择

如何判断安装成功?

测试一下

分析


简介

什么是applet?

Java Applet 是一种使用 Java 编程语言编写的程序,它可以嵌入到网页中并在用户的浏览器上运行。Applet 通常用于实现更丰富、交互性更强的网络应用。

目前由于安全问题已经被废弃

需要解决什么问题?

由于applet已经被废弃,现在主流的浏览器已经不再支持,目前需要firefox52版本 or 奇安信 or 360浏览器才能支持运行,同时需要安装icedtea的1.6版本,让applet和本地通信。

使用支持applet的浏览器的情况下,ubuntu2004上applet无法运行,但是在1604上可以正常运行。

icedtea是什么?

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

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

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

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


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的接口阻塞了。

经排查,是这个commit导致了applet阻塞。

真正导致applet无法运行的就是红框代码,新增了对0x00的校验,而applet通信的部分格式就是以0x00结尾,因此无法通过校验。

因此在回退这个commit之后重新编译glib,安装了新的glib之后applet可以正常运行。

另一种方法

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

cheerp applet runner

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

该插件非商业使用免费。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值