我曾经在我的Linux
机器上安装了多个JDK
,并且我喜欢从命令行切换到另一个版本(我曾经手动更改我的JAVA_HOME
):
这是我目前的做法:
我在我的.bashrc
input~/.paths
。
.paths
包含我的机器上安装的所有JDK
。
JDK7="~/local/jdk1.7.0_15" JDK8="~/local/jdk1.8.0" // I use Jdk 7 by default JDK_HOME=$JDK7; // including $JDK_HOME/bin to the $PATH
当我不想切换到JDK8
,我修改了JDK_HOME
variables,使其指向文件中的JDK8
,然后re-source
我的.paths
文件。
我知道IDE
可以轻松地pipe理多个JDK
,但是我想要一个类似rvm的解决scheme。
有jdk_switcher,虽然它对于一些ubuntu
路径来说是相当静态的,但应该很容易将其修改为从其他路径运行。
有一个计划,使RVM 2
支持切换更多的只是Ruby
版本,你可以在这里阅读更多关于它。
任何有链接的人都可以评论。
我不认为有这样的解决办法。 看到这个问题的解决方案符号链接。
您可以根据需要安装尽可能多的Java版本。 只需安装到您选择的文件夹并使用一些约定。
如果您想一次性使用特定版本,请使用完整路径(例如)运行它:
>C:\java\jdk-6u35\bin\java.exe
要么
>/java/jdk-6u35/bin/java.exe
如果你想改变使用它,改变你的路径,把你想要的版本在前面。 路径可能与上面显示的类似。
一定要改变JAVA_HOME以及任何其他的环境设置,包括对java位置的引用。
请注意,有些工具具有内部配置,以便使用哪个Java版本。 Eclipse是一个很好的例子。 您必须设置JVM的列表,然后为每个项目或所有项目选择一个。
现在,我正在使用jdk-manager ,一个小小的bash脚本来管理多个JDKS
安装。
我写了自己的脚本来管理Java版本。 我使用一些需要Oracle Java的站点,通常是最新版本,所以我不能使用apt / aptitude,因此不能使用update-alternatives或者jdk-manager(使用update-alternatives)。
这是我的脚本。 我不专业发展,所以可能是一团糟,但它符合我的目的。 它只考虑存储在/ usr / lib / jvm中的java版本。
#!/bin/bash # the proper way.... # + update: update-alternatives only works for versions installed by apt or aptitude # ... same for jdk-manager (uses update-alternatives to do the heavy lifting) #echo "The proper way is:" #echo "$ update-alternatives --config java" #exit # the rest is (no longer) depreciated.... echo "The current default java is $(readlink --canonicalize `which java`)" PS3='Select Java to install: ' options=( $(find /usr/lib/jvm -iname java) ) noptions=${#options[@]} (( loption=noptions-1 )) options[${#options[@]}]="Quit" select opt in "${options[@]}" do for i in $(seq 0 $loption); do [ "$opt" == "${options[$i]}" ] && \ javapath=${options[$i]} done if [ "$javapath" ]; then break fi if [ "$opt" == "Quit" ]; then echo "Nothing installed."; exit else echo "Invalid option. Try another one."; continue fi done # remove the old link (might be superfluous) #rm -vf -- "$link" # set new link (symbolic, force, verbose) sudo ln -sTfv "$javapath" "/usr/bin/java" default_java_dir=$(echo "$javapath" | grep --only-matching --regexp="\/usr\/lib\/jvm\/[^\/]*") sudo ln -sTfv "$default_java_dir" "/usr/lib/jvm/default-java" java_bin_dir=$(echo "$javapath" | sed 's/[^\/]*$//') echo $java_bin_dir [ -f "${java_bin_dir}javac" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javac" [ -f "${java_bin_dir}javadoc" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javadoc" [ -f "${java_bin_dir}javafxpackager" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javafxpackager" [ -f "${java_bin_dir}javah" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javah" [ -f "${java_bin_dir}javap" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javap" [ -f "${java_bin_dir}java-rmi.cgi" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}java-rmi.cgi" [ -f "${java_bin_dir}java_vm" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}java_vm" [ -f "${java_bin_dir}javaws" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javaws" find_dir=$(dirname "$java_bin_dir") pluginpath=$(find "$find_dir" -name libnpjp2.so) #exit echo -n "Install $pluginpath as the Java plugin? [y/N]: " read response=$(echo $REPLY | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/') if [ "${response:0:1}" == "Y" ]; then # directories for plugins plugin_dirs="/usr/lib/firefox/plugins /usr/lib/firefox-addons/plugins /usr/lib/mozilla/plugins /opt/google/chrome /home/james/.mozilla/plugins" # first, clean out anything we might have improperly installed already echo "Using 'sudo' to remove any installed java plugins..." for pdir in $plugin_dirs; do sudo rm --verbose --force "$pdir/libjavaplugin_oji.so" "$pdir/libnpjp2.so" "$pdir/IcedTeaPlugin.so" done # okay, trying brute force and awkwardness.... echo "Using 'sudo' to install \"$pluginpath\" in several places..." for pdir in $plugin_dirs; do sudo ln --symbolic --verbose --force "$pluginpath" "$pdir" done fi exit
如果您使用Debian或派生的GNU / Linux发行版,则可以使用更新选项来设置当您键入java时正在运行的内容。
尝试打字
update-alternatives --display java
这将显示你有什么替代品可用。 这个命令是非破坏性的,也就是说,它不会改变任何东西。
man update-alternatives
会给你的工具手册。 你可能想要的命令是:
update-alternatives --config java
这将给你一个简单的,交互的方式来设置Java程序。 如果你想编写脚本,你也可以使用–set。
当然,如果不先跑人,就不要相信我,因为人们有时会上网说谎。 ;)
编辑:我忘了, 这个链接介绍了更好的选择(如果特定的方式)。
对于Linux,您可以使用update-alternatives不仅可以设置java,javac和其他二进制文件的路径,还可以设置JAVA_HOME。 由于它所做的只是管理链接,所以可以安装到您的jdk目录的链接,然后将JAVA_HOME设置为指向该链接。 例如,“update-alternatives –install / usr / lib / jdk jdk / path / to / jdk8 1”将安装一个指向你的jdk目录的链接。 然后,在.bashrc,.profile或任何您用于设置环境变量的文件中添加“将JAVA_HOME导出到/ usr / lib / jdk”,并且在使用更新进行切换时,将在JAVA_HOME下指定的名称为jdk的任何替代-alternatives – 配置jdk。 如果您正在使用java可执行文件的替代方法,则可以使用–slave在java中执行jdk。