Ubuntu环境下如何更新Flyway专属Java版本?
解决Flyway在Ubuntu中使用指定Java版本的问题
你已经搞定了系统默认Java的更新,但Flyway因为自带了独立JRE,所以没自动用上新的版本。别担心,咱们一步步来调整:
方法1:替换Flyway自带的JRE(最直接)
Flyway默认会优先调用自身目录下的jre文件夹里的Java环境,所以咱们直接把这个目录替换成系统里的新Java即可:
- 先确认系统里的目标Java版本正常运行:
确保输出是你想要的Oracle Java 8版本。java -version - 备份Flyway原来的JRE(以防后续需要恢复):
sudo mv /opt/flyway/jre /opt/flyway/jre_backup - 找到系统Java的安装路径,Oracle Java 8通过
apt安装后,路径通常是/usr/lib/jvm/java-8-oracle,你也可以用下面的命令确认:
输出结果就是系统Java的实际位置。update-alternatives --list java - 给Flyway创建指向系统Java的软链接:
sudo ln -s /usr/lib/jvm/java-8-oracle /opt/flyway/jre - 验证Flyway是否用上了新Java:
查看输出里的flyway -versionJava version:字段,应该就是你刚安装的Oracle Java 8了。
方法2:修改Flyway启动脚本(更灵活)
如果不想替换自带JRE,咱们可以直接修改启动脚本,强制Flyway调用系统的Java:
- 打开Flyway的启动脚本,一般位于
/opt/flyway目录下:sudo nano /opt/flyway/flyway - 在脚本中找到类似这样的行:
JRE_HOME="$DIR/jre" - 把它替换成系统Java的路径,比如:
JRE_HOME="/usr/lib/jvm/java-8-oracle" - 按
Ctrl+O保存修改,Ctrl+X退出编辑器。 - 同样用
flyway -version验证版本是否正确。
为什么你之前的update-alternatives命令没生效?
你之前执行的update-alternatives --install /usr/bin/java java /opt/flyway/jre/bin/java 1优先级设置太低(仅为1),而系统默认Java的优先级通常更高,所以Flyway还是会优先使用自带的JRE。如果想用这个方法,需要把系统Java的优先级设高,比如:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-oracle/bin/java 100
然后执行update-alternatives --config java,选择对应编号的Oracle Java 8即可。不过还是前面两种方法更直接针对Flyway的问题。
内容的提问来源于stack exchange,提问作者Vikas Kumar
相关产品推荐
相关产品推荐

