在Windows下并发运行的多个Java版本

在Windows下并发运行的多个Java版本,java,Java,我们有几个应用程序在Java5上运行,现在想引入一个基于Java6的应用程序。两个java版本能否在Windows下共存 是否有任何控制面板可以为不同的应用程序设置适当的Java版本,或者以任何其他方式设置运行特定应用程序的Java版本?当然,您可以在Windows下使用多个版本的Java。不同的应用程序可以使用不同的Java版本。您的应用程序是如何启动的?通常,您将有一个批处理文件,其中有 java ... 这将使用PATH变量搜索Java可执行文件。因此,如果Java5是第一个出现在这个路

我们有几个应用程序在Java5上运行,现在想引入一个基于Java6的应用程序。两个java版本能否在Windows下共存


是否有任何控制面板可以为不同的应用程序设置适当的Java版本,或者以任何其他方式设置运行特定应用程序的Java版本?

当然,您可以在Windows下使用多个版本的Java。不同的应用程序可以使用不同的Java版本。您的应用程序是如何启动的?通常,您将有一个批处理文件,其中有

java ...
这将使用PATH变量搜索Java可执行文件。因此,如果Java5是第一个出现在这个路径上的,那么运行Java6应用程序时就会出现问题。然后,您应该修改批处理文件以使用特定的Java版本,例如,通过使用值
C:\Java\java6
定义环境变量
JAVA6HOME
(如果此目录中安装了Java 6),并更改批处理文件调用

%JAVA6HOME%\bin\java ...

同时安装几个JRE/JDK版本是绝对可能的。此外,您不必为此做任何特殊的事情,因为Sun正在为每个文件夹(在程序文件下)创建一个不同的文件夹


没有控制面板来检查哪个JRE适用于每个应用程序。基本上,工作的JRE是PATH环境变量中的第一个。您可以更改它,或者更改JAVA_HOME变量,或者创建特定的cmd/bat文件来启动所需的应用程序,每个应用程序的路径中都有不同的JRE。

对于特定的应用程序,应该可以更改JAVA_HOME环境变量的不同设置

从命令行或批处理脚本启动时,可以使用
set JAVA\u HOME=C:\…\j2dskXXX
更改JAVA\u HOME环境

您可能还需要更改
PATH
环境变量以使用正确的java二进制文件。为此,您可以使用
set PATH=%JAVA\u HOME%\bin;%PATH%

使用“Java-version:1.5”等调用Java时,应使用正确的Java版本运行。(显然,用您想要的版本替换1.5。)


如果Java正确安装在Windows上,那么它所使用的注册表中存储的每个版本都有指向vm的路径,因此您不需要在Windows上乱搞环境版本。

如果使用(您可以从任何URL启动应用程序,甚至本地文件系统)它将负责为您的应用程序找到正确的版本。

我对Windows中跟踪JAVA文件的类路径、JAVA_主页和路径思想的笨拙感到震惊。我之所以来到这里,是因为有多个JRE,以及如何满足于它。在没有从一个比我聪明得多的人那里重复信息的情况下,我宁愿指向他关于这个问题的文章,对我来说,这篇文章完美地解决了这个问题

文章作者:Ted Neward:

随着Java作为服务器端开发语言的指数级增长,它已经成为一种等价的语言 Java开发工具、环境、框架和扩展呈指数级增长。 不幸的是,并非所有这些工具在同一个JavaVM安装下都能很好地协同工作。一些 需要与Servlet2.1兼容的环境,有些需要2.2。有些仅在JDK 1.2或更高版本下运行, 有些在JDK1.1下(没有更高版本)。有些需要预swing 1.0中的“com.sun.swing”包 现在,其他人需要“javax.swing”包名

更糟糕的是,这个问题甚至可以在企业内部发现,因为系统是使用 由于安装了一些Java扩展,六个月前的Java可能突然“无法工作” 新的(看似无关的)应用程序版本所需。这会使Java的部署复杂化 应用程序遍布整个公司,并导致客户想知道确切的原因,五年后 臭名昭著的“安装此应用程序会破坏我的系统”始于微软的DLL方案, 除此之外,我们还没有取得多大进展。(事实上,新的.NET计划实际上是为了解决 刚刚描述的臭名昭著的“DLL地狱”问题。)

本文描述了如何配置Java安装,使给定的应用程序能够接收自己的, private,JRE,允许多个Java环境共存,而无需驱动客户(或系统) (我)疯了


或者使用链接。虽然在运行的环境中更新路径很不方便,但重新创建到新版本JRE/JDK的链接很容易。因此:

  • 安装要使用的不同版本的JDK
  • 通过或通过内置mklink命令创建指向该文件夹的链接
  • 设置链接的路径
  • 如果要使用其他版本的java,请删除该链接,创建一个新的链接,PATH/java\u HOME/硬编码脚本保持不变

使用自己的java版本启动JMeter时,我使用了一个简单的脚本

setlocal
set JAVA_HOME="c:\java8"
set PATH=%JAVA_HOME%\bin;%PATH%;
java -version
让java“可移植” 您可以在此处使用此方法:


使用Java Web Start,您可以安装多个JRE,然后根据需要调用。 在win上,您可以创建一个.bat文件:

1-网上版本: -localfile-J-Djnlp.application.href=-localfile-J“”

2-从缓存启动:
-localfile-J”“

我们可以使用SDKMan在同一台机器上安装多个版本的Java开发工具包

关于SDKMan的一些要点如下:

  • SDKMan是免费使用的,由开源社区开发
  • SDKMan是用英文编写的,它只需要在系统上存在和程序
  • SDKMan可以为JVM安装大约29个软件开发工具包,如Java、Groovy、Scala、Kotlin和Ceylon。Ant、Gradle、Grails、Maven、SBT、Spark、Spring Boot、Vert.x
  • 我们不需要担心设置
    \u HOME
    PATH
    环境变量,因为SDKMan会自动处理它
  • SDK
    $ curl -s "https://get.sdkman.io" | bash  
    $ source "$HOME/.sdkman/bin/sdkman-init.sh" 
    
    $ sdk install java 8.0.201-oracle
    
    $ sdk install java 9.0.4-open 
    
    $ sdk install java 11.0.2-open
    
    $ sdk uninstall java 11.0.2-open
    
    sdk default java <your-java_version>