Free12.2 安装Oracle JDK1.8

11 篇文章 0 订阅
7 篇文章 0 订阅

1. 操作录像

Free12.2 安装Oracle JDK1.8

2. 操作记录

如无特殊说明,则本文所有操作均以root执行。如需安装openjdk可以参考《FreeBSD-12.2 网络基本设置视频教程》一文。

2.1 启用freebsd的linux兼容

kldload linux
kldload linux64
echo linux_enable="YES" >> /etc/rc.conf

查看结果是否正确

kldstat

下图为正确结果:
在这里插入图片描述

2.2. 修改ports源

sed -i ".bak" 's/SERVERNAME=portsnap.FreeBSD.org/SERVERNAME=portsnap.cn.FreeBSD.org/g' /etc/portsnap.conf

安装portsnap tree

portsnap fetch extract update

2.3. 下载jdk-8u241-linux-x64.tar.gz

下载地址:

https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

下载完成后,上传jdk-8u241-linux-x64.tar.gz到虚拟机的/usr/ports/distfiles目录下

2.4. 执行安装

执行安装之前,先修改/usr/ports/Mk/bsd.sites.mk文件的内容,这个文件是下载linux依赖的地址,centos官方提供的地址要下到天荒地老,修改成阿里云的(删除或注释掉原有的url),修改完成后结果如下:

MASTER_SITE_CENTOS_LINUX+= \
    https://mirrors.aliyun.com/centos-vault/%SUBDIR%/:DEFAULT,amd64,i386,SOURCE
.endif

然后执行安装:

cd /usr/ports/java/linux-oracle-jdk18
make install clean

PS:下载的过程中出现的安装提示,一路回车确认,同时如果出现断连,卡死的情况(很常见),果断CTRL+C中断(等要到天荒地老海枯石烂),重新再来,直到全部下载完成。

2.5. 最后的设置

现在安装完毕,但是会出现一个很恶心的错误,导致java无法正常运行,错误如下:

/usr/local/linux-oracle-jdk1.8.0/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

我们继续搞定这个问题。首先来修改一下软连接:

mv /usr/local/bin/java /usr/local/bin/java.bak
mv /usr/local/bin/javac /usr/local/bin/javac.bak
mv /usr/local/bin/jar /usr/local/bin/jar.bak
ln -s /usr/local/linux-oracle-jdk1.8.0/bin/java /usr/local/bin/java
ln -s /usr/local/linux-oracle-jdk1.8.0/bin/javac /usr/local/bin/javac
ln -s /usr/local/linux-oracle-jdk1.8.0/bin/jar /usr/local/bin/jar

然后设置加载libjli.so库

cat >> /usr/local/libdata/ldconfig/jdk << EOF
/usr/local/linux-oracle-jdk1.8.0/lib/amd64/jli
EOF

init 6

如果这时候我们看到java已经可以正确执行了那么恭喜你,如果java还是不能正确执行,那么你就用ldconfig -m /usr/local/linux-oracle-jdk1.8.0/lib/amd64/jli/libjli.so命令看看报不报错,如果报错那就换openjdk用吧。我试验过多次,发现这个问题跟oracle-jdk、freebsd和freebsd模拟的linux(centos)这三者版本之间有很大关系,大多数情况下能用以上操作步骤解决掉(比如ldcofig -m命令不报错的情况下),真解决不了也找不到什么好办法。比如241版本的jdk可以解决,241以前可能会没有这个问题,222版本jdk解决不掉,freebsd32位好解决,freebsd64不好解决。一顿折腾下来,也不知道该说orcale的不是还是freebsd不行了。

最后的最后,很多次程序会引用环境变量中的JAVA_HOME,所以我们还是设置一下环境变量,vi打开~/.cshrc,最后添加三行(请注意,这里只设置了root的环境变量,其他用户的没管):

setenv JAVA_HOME /usr/local/linux-oracle-jdk1.8.0
setenv CLASSPATH .:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/jre/lib/dt.jar
set path = ($JAVA_HOME/bin /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值