我们有几个在Java 5上运行的应用程序,现在想引入一个基于Java 6的应用程序。两个Java版本可以在Windows下一起生活吗?
是否有任何控制面板可为不同的应用程序设置适当的Java版本,或通过任何其他方式设置,那么将使用哪个Java版本来运行该特定应用程序?
Answers:
当然,您可以在Windows下使用Java的多个版本。并且不同的应用程序可以使用不同的Java版本。您的申请如何开始?通常,您将拥有一个批处理文件,其中包含类似
java ...
这将使用PATH变量搜索Java可执行文件。因此,如果Java 5首先出现在PATH上,则在运行Java 6应用程序时会遇到问题。然后,您应该修改批处理文件以使用特定的Java版本,例如,通过JAVA6HOME使用值定义环境变量C:\java\java6(如果此目录中安装了Java 6)并更改批处理文件的调用
%JAVA6HOME%\bin\java ...
STATIC作为参数,但是JDK也是吗?
绝对可以并排安装几个JRE / JDK版本。而且,您不必为此做任何特殊的事情,因为Sun会为每个文件夹创建一个不同的文件夹(在Program Files下)。
没有控制面板来检查哪个JRE适用于每个应用程序。基本上,将起作用的JRE将是PATH环境变量中的第一个。您可以更改它或JAVA_HOME变量,或创建特定的cmd / bat文件来启动所需的应用程序,每个应用程序在路径中均具有不同的JRE。
我对Windows中CLASSPATH,JAVA_HOME和PATH思路的笨拙感到震惊,以跟踪Java文件。我到达这里是因为有多个JRE,以及如何使用它。在不反省信息的情况下,比一个比我聪明得多的家伙,我宁愿指向他关于这个问题的文章,对我来说,这是完美解决的。
文章作者:Ted Neward:多个Java家:为Java应用提供自己的JRE
随着Java作为服务器端开发语言的迅猛发展,Java开发工具,环境,框架和扩展也实现了同等的指数增长。不幸的是,在相同的Java VM安装下,并非所有这些工具都能很好地配合使用。有些需要Servlet 2.1兼容环境,有些则需要2.2。有些仅在JDK 1.2或更高版本下运行,有些仅在JDK 1.1(且没有更高版本)下运行。有些需要从Swing之前的1.0天开始的“ com.sun.swing”软件包,有些则需要“ javax.swing”软件包名称。
更糟糕的是,甚至在公司内部也可能发现此问题,因为仅仅六个月前使用Java开发的系统由于安装了新的(似乎无关)应用程序所需的某些Java扩展而可能突然“无法工作”。这可能会使整个公司内Java应用程序的部署复杂化,并导致客户确切地想知道,为什么在臭名昭著的“安装此应用程序破坏我的系统”问题开始五年后,微软的DLL方案就开始了,除此之外,没有什么进步。(实际上,新的.NET计划实际上是在解决刚刚描述的臭名昭著的“ DLL-Hell”问题。)
本文描述了如何配置Java安装,以便给定的应用程序接收其自己的私有JRE,从而允许多个Java环境共存而不会使客户(或系统管理员)发疯。
我们可以使用SDKMan在同一台计算机上安装多个版本的Java开发套件。
关于SDKMan的一些要点如下:
_HOME和PATH环境变量,因为SDKMan会自动处理它。SDKMan可以在任何基于UNIX的平台上运行,例如Mac OSX,Linux,Cygwin,Solaris和FreeBSD,我们可以使用以下命令进行安装:
$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
因为SDKMan是用bash编写的,所以只需要curl和zip / unzip即可出现在系统上。您也可以先在Windows环境中安装Cygwin或Git Bash,然后再运行上述命令,然后在Windows上安装SDKMan 。
Commandsdk list java将为我们提供可以使用SDKMan安装的Java版本列表。
安装Java 8
$ sdk install java 8.0.201-oracle
安装Java 9
$ sdk install java 9.0.4-open
安装Java 11
$ sdk install java 11.0.2-open
卸载Java版本
如果要卸载任何JDK版本,例如11.0.2-open,则可以执行以下操作:
$ sdk uninstall java 11.0.2-open
切换当前的Java版本
如果要为所有终端和应用程序激活一种版本的JDK,则可以使用以下命令
sdk default java <your-java_version>
上面的命令还将自动更新PATH和JAVA_HOME变量。您可以在我的文章如何在同一台机器上安装Java的多个版本上阅读更多内容。
使用“ java -version:1.5”等调用Java应该以正确的Java版本运行。(显然,将1.5替换为您想要的版本。)
如果在Windows上正确安装了Java,则使用的注册表中存储的每个版本都有vm的路径,因此您无需担心Windows上的环境版本。
使用我自己的Java versin启动jmeter时,我使用一个简单的脚本
setlocal
set JAVA_HOME="c:\java8"
set PATH=%JAVA_HOME%\bin;%PATH%;
java -version
要有一个java“便携式”,可以在这里使用此方法:
如果使用Java Web Start(可以从任何URL甚至是本地文件系统启动应用程序),它将为您的应用程序找到正确的版本。
使用Java Web Start,您可以安装多个JRE,然后调用所需的内容。获胜时,您可以创建一个.bat文件:
1-在线版本:< your_JRE_version \ bin \ javaws.exe> -localfile -J-Djnlp.application.href = < 。jnlp文件的URL .jnlp> -localfile -J“ < path_temp_jnlp_file_ .jnlp>”
2-从缓存启动:< your_JRE_version \ bin \ javaws.exe> -localfile -J“ <您的本地_jnlp_file的路径。jnlp>”