本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!