版本管理:Subversion Edge:旧版使用OpenJDK的问题和对应方法
发布日期:2021-06-30 20:21:16 浏览次数:2 分类:技术文章

本文共 2434 字,大约阅读时间需要 8 分钟。

在这里插入图片描述

这篇文章整理一下旧版Subversion Edge在使用Open JDK安装上的问题和对应方法。

现象

安装Subversion Edge,执行如下命令时出错:

执行命令:csvn install

由于项目有需要将旧版的Subversion Edge进行迁移,所以需要安装一下6年前的Subversion Edge的版本(4.0.14/4.0.5),Subversion Edge需要的JDK版本需要是JDK 1.6或以上,但是使用OpenJDK时确始终提示JAVA_HOME下相关的版本没有达到,详细信息如下所示:

在这里插入图片描述

  • Open JDK

执行命令:java -version

在这里插入图片描述

原因

经过确认,发现Open JDK 1.8已经正常安装,java -version能够正常执行。反复设定JAVA_HOME的环境变量不起作用,曾怀疑是否是BCLinux的缘故,迅速打消了这种没有依据的瞎猜。由于Subversion Edge的这个版本太旧,没有找到其相关的文档对于JDK支持的限制说明。Subversion Edge 4.0.14为2015年的版本,而JDK 1.8是2014年3月发布,理论上来说应该没有太大问题,而且此版本是JDK 1.6+的需求。查询之后发现是此版本的官方包中的csvn中的代码存在不支持Open JDK的小问题,具体代码位于csvn文件的792行,详细如下所示:

789     if [ "$JAVA_REQUIRED_VERSION" != "" ] ; 790     then 791         javaexec=$JAVA_HOME/bin/java 792             version=`$javaexec -version 2>&1 | grep "java version" | awk '{ print substr($3, 2, length($3)-2); }'` 793         version=`echo $version | awk '{ print substr($1, 1, 3); }' | sed -e 's;\.;0;g'` 794         requiredversion=`echo $JAVA_REQUIRED_VERSION | sed -e 's;\.;0;g'` 795         if [ $version ] 796             then 797                     if [ $version -ge $requiredversion ] 798                     then 799                 # success 800                             return 801                     fi 802             fi 803  804         echo 805         echo "Unable to start $APP_LONG_NAME: minimum Java version not found" 806         echo "Please make sure JAVA_HOME points to a JDK of at least version $JAVA_REQUIRED_VERSION" 807         echo 808         exit 2 809     fi

问题在于grep “java version” ,因为open jdk的java -version显示的是openjdk version,而非OpenJDK则显示java version,比如:

liumiaocn:~ liumiao$ java -versionjava version "1.8.0_191"Java(TM) SE Runtime Environment (build 1.8.0_191-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)liumiaocn:~ liumiao$

对应方法

liumiaocn:bin liumiao$ ls -l csvn-rwxr-xr-x@ 1 liumiao  staff  45602 Mar 23  2015 csvnliumiaocn:bin liumiao$ cp -p csvn csvn.orgliumiaocn:bin liumiao$ vi csvnliumiaocn:bin liumiao$ diff csvn csvn.org792c792<      version=`$javaexec -version 2>&1 | grep "version" | awk '{ print substr($3, 2, length($3)-2); }'`--->      version=`$javaexec -version 2>&1 | grep "java version" | awk '{ print substr($3, 2, length($3)-2); }'`liumiaocn:bin liumiao$

注:此问题经过确认至少5.2.4的最新版本已经是改为grep “version” 的方式,至于在哪个版本中首先改过来的就没有继续确认

其他

  • JAVA_HOME到底需不需要设定
    从上述csvn的文件中可以看到获取当前JDK版本的方式是${JAVA_HOME}/bin/java -version,所以如果/bin/java -version可以获取相同的版本信息的话是不需要设定JAVA_HOME的。

转载地址:https://liumiaocn.blog.csdn.net/article/details/110496678 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:版本管理工具:CentOS下安装配置Subversion Edge 4.0.14
下一篇:Bash基础:在MacOS上确认版本与升级Bash的方法

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月28日 10时23分22秒