报错详情
Travis-CI构建Java项目,按照文档官方的介绍:https://docs.travis-ci.com/user/languages/java/,使用最简单的配置进行构建:指定jdk为oraclejdk8
的构建文件.travis.yml
:
language: java
sudo: false
jdk:
- oraclejdk8
发生错误:
Installing oraclejdk8
$ export JAVA_HOME=~/oraclejdk8
$ export PATH="$JAVA_HOME/bin:$PATH"
$ ~/bin/install-jdk.sh --target "/home/travis/oraclejdk8" --workspace "/home/travis/.cache/install-jdk" --feature "8" --license "BCL"
Ignoring license option: BCL -- using GPLv2+CE by default
install-jdk.sh 2019-09-17
Expected feature release number in range of 9 to 14, but got: 8
The command "~/bin/install-jdk.sh --target "/home/travis/oraclejdk8" --workspace "/home/travis/.cache/install-jdk" --feature "8" --license "BCL"" failed and exited with 3 during .
Your build has been stopped.
报错分析
根据提示可以知道:在安装oraclejdk8
时就发生错误了,好像是和--license "BCL"
这个所谓的协议有关。去查了下这个协议BCL(Binary Code License):Oracle Binary Code License Agreement for the Java SE Platform Products and JavaFX,翻译过来就是:针对Java SE平台产品和JavaFX的Oracle二进制代码许可协议。
我们可以简单地理解为因为受这个协议的限制,导致在该机器上装不了oraclejdk8
。现在在Oracle官网下载jdk要登录好像就是和这个有关系(个人猜测+道听途说)。
解决方案
逛了下 Travis-CI的社区,找到一篇出现相同问题的帖子:https://travis-ci.community/t/install-of-oracle-jdk-8-failing/3038,这里提到了一个方案是改用openjdk
。
Travis CI大概在2019年5月左右有次更新,好像是切换了部分的构建源,将之前的Ubuntu Trusty 14.04
切换成了Ubuntu Xenial 16.04
,详见:Travis CI更新日志–Xenial作为默认构建环境。
科普:Ubuntu Xenial 16.04、Ubuntu Trusty 14.04是两个不同的版本,介绍可参考:Ubuntu 各版本代号简介,或者查看具体的发现说明。
因此,还有一种办法是使用dist: trusty
切换成之前的Ubuntu Trusty 14.04
版本。
您的构建已迁移到我们的Xenial映像,因为您未dist:在.travis.yml文件中指定。请添加它dist: trusty以将其移回Trusty,这应该起作用。
总结一下:
1.改用openjdk
构建文件.travis.yml
:
language: java
sudo: false
jdk:
- openjdk8
2. 切换成之前的构建环境(Ubuntu Trusty 14.04
版本)
构建文件.travis.yml
:
language: java
dist: trusty
sudo: false
jdk:
- oraclejdk8
存疑
- 上面两个方案是晚上见得比较多的,我使用方法1没有问题,方法2还没有进行测试,但是很多人都说这个方法可行。
- 在逛社区的时候,发现好像不仅仅是oraclejdk的版本8有问题,其它版本好像也有类似问题。好像和这个协议是有关系的,另外我们知道jdk1.8后面小版本更新好像是收费的,不知道和这个有没有关系……