每个会话交换Java版本

亚历山大·桑托斯(Alexandre Santos)

我在14.04机器上安装了Java7和Java8的组合。

当我想在他们之间切换时,我做了一个sudo update-alternatives --config java但是,以这种方式更改它会更改所有终端上的当前Java版本。我只想为当前终端更改它。例如,我想将一些用1.7编写的Java代码与其他用1.8编写的代码进行测试。

另一种选择是做类似的事情

function java_use() {
   export JAVA_HOME=$(/usr/libexec/java_home -v $1)
   export PATH=$JAVA_HOME/bin:$PATH
   java -version
}

但这仅适用于我的Mac,我想要更清洁的东西,而不必PATH每次都修改也许使用chroot

如何才能“干净地”更改Java版本-最好仅在已安装的版本之间-并且仅针对当前终端会话?

盖尔哈

如果您查看/usr/sbin/update-java-alternatives,则会看到它会迭代/usr/lib/jvm/.*.jinfo查找已安装的版本,因此您可以执行相同的操作来检测已安装的版本。

至于PATH每次都不修改,可以PATH通过使用内置hash命令(run help hash告诉bash它应为Java使用哪个二进制文件来完全规避

您可以在以下基础上进行构建:

java_use() {
    local file version versions=()
    for file in /usr/lib/jvm/.*.jinfo; do
        [[ -e $file ]] || continue
        version=${file##*/.} version=${version%.jinfo}
        versions+=("$version")
    done
    if (( ${#versions[@]} == 0 )); then
        printf >&2 'No java installed\n'
        return 1
    fi
    select version in "${versions[@]}"; do
        if [[ -n $version ]]; then
            export JAVA_HOME="/usr/lib/jvm/$version"
            hash -p "$JAVA_HOME/bin/java" java
            break
        fi
    done
    type java
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

每个会话交换Java版本

来自分类Dev

每个请求都有Java新会话?

来自分类Dev

每个请求都有Java新会话吗?

来自分类Dev

大猩猩会话-每个用户的会话

来自分类Dev

是否每个 Java 版本都有:32 位和 64 位版本?

来自分类Dev

每个请求或每个用户的休眠会话数?

来自分类Dev

每个请求或每个用户的休眠会话数?

来自分类Dev

流星#每个和会话数据

来自分类Dev

每个会话的Monolog日志文件

来自分类Dev

每个 GPU 的 Nvenc 会话限制

来自分类Dev

SSH协议版本交换顺序重要吗?

来自分类Dev

Java名称交换

来自分类Dev

矩阵交换行-Java

来自分类Dev

Java名称交换

来自分类Dev

Azure缓存是否无法在VIP交换之间保留会话状态?

来自分类Dev

每个版本不同的文件

来自分类Dev

CDI-会话范围-每个请求范围的新会话范围

来自分类Dev

以版本2运行远程Powershell会话

来自分类Dev

重用会话时更改SSL协议版本

来自分类Dev

每个用户的每种产品的会话时长

来自分类Dev

快速请求每个请求的更改会话

来自分类Dev

每个HTTP /会话请求的GLOBAL数据?

来自分类Dev

保存每个用户的php会话ID

来自分类Dev

botframework处理每个用户和会话的附件

来自分类Dev

快速请求每个请求的更改会话

来自分类Dev

php artisan服务每个请求的新会话

来自分类Dev

在每个ssh会话中自动导出变量

来自分类Dev

botframework处理每个用户和会话的附件

来自分类Dev

每个用户的每种产品的会话时长