我以前在JDK
计算机上安装了多个Linux
,我喜欢从命令行从一个版本切换到另一个版本(我曾经手动更改JAVA_HOME
):
这是我目前的做法:
我source
中的~/.paths
.bashrc
。
.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
变量以指向文件中的JDK8
,并re-source
{my} .paths
文件
我知道IDE
可以轻松管理多个JDK
,但我想要一个类似rvm的解决方案。
答案 0 :(得分:3)
有jdk_switcher虽然它对某些ubuntu
路径来说是非常静态的 - 但应该很容易将其修改为从其他路径运行。
我们计划让RVM 2
支持切换更多Ruby
个版本,您可以阅读更多相关信息here。
任何有链接的人都可以发表评论。
答案 1 :(得分:1)
我认为没有这样的解决方案。 请参阅此question以查找带符号链接的解决方案。
答案 2 :(得分:0)
您可以根据需要安装任意数量的Java版本。只需安装到您选择的文件夹并使用一些约定。
如果您想要一次性使用特定版本,请使用完整路径运行它(例如):
>C:\java\jdk-6u35\bin\java.exe
或
>/java/jdk-6u35/bin/java.exe
如果您想要更改为只使用它,请更改路径以将所需版本放在前面。路径可能类似于上面显示的路径。
请务必更改JAVA_HOME以及包含对java位置的引用的任何其他环境设置。
请注意,某些工具具有关于要使用的Java版本的内部配置。 Eclipse就是一个很好的例子。您必须设置JVM列表,然后为每个项目或所有项目选择一个。
答案 3 :(得分:0)
现在,我正在使用jdk-manager,一个小的bash脚本来管理多个JDKS
安装。
答案 4 :(得分:0)
我编写了自己的脚本来管理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
答案 5 :(得分:0)
如果您使用Debian或派生的GNU / Linux发行版,则可以使用更新替代方案来设置键入java时当前正在运行的内容。
尝试输入
update-alternatives --display java
这将向您展示您可以使用的替代品。 该命令是非破坏性的,也就是说,它不会改变任何东西。
man update-alternatives
将为您提供该工具的手册。 您可能想要的命令是:
update-alternatives --config java
这将为您提供一种设置java程序的简单,交互式方式。如果要编写脚本,也可以使用--set。
当然,如果没有先跑人,你就不应该相信我,因为人们有时会上网说谎。 ;)
编辑:我忘了,this link以良好的(如果特定于Vi)方式引入更新替代品。
答案 6 :(得分:0)
对于Linux,您可以使用update-alternatives来设置java,javac和其他二进制文件的路径,还可以设置JAVA_HOME的路径。由于它只是管理链接,您可以安装指向jdk目录的链接,然后将JAVA_HOME设置为指向该链接。例如,“update-alternatives --install / usr / lib / jdk jdk / path / to / jdk8 1”将安装指向jdk目录的链接。然后在.bashrc,.profile或用于设置环境变量的任何文件中添加“export JAVA_HOME to / usr / lib / jdk”,当您使用更新切换时,JAVA_HOME将指向您以jdk名称安装的任何替代方法 - 替代品--config jdk。如果你已经为java可执行文件使用了替代品,你可以使用--slave在每次java时使用jdk。