别把jdk装到program files下?

   这些天遇到一个问题, 也就引出了本博客里的标题. 

 

    问题是这样的.  一个Java程序要启动两个java进程A和B,第一个进程A是按正常的启动方式进行的,这里边没什么问题;第二个进程B是在进程A里通过调用Runtime.getRuntime().exec(mCmd, mEnv, mDir)的形式启动的. 问题就出在传的参数mCmd上了, 这个mCmd的值是从一个xml文件里读来的, 这个xml的内容大致如下:

 

<app name="WP" cmd="C:\Program Files\Java\jdk1.6.0_07\bin\java -server -XX:+UseConcMarkSweepGC -...." />

 

这样执行exec方法时,JVM就报无法执行"C:\Program Files\Java\jdk1.6.0_07\bin\java"所指向的命令了, 原因很简单Windows没法找到没引号的"Program Files"文件夹,它会在空格处断开的.

 

这个怎么办? 

 

我试着给Program Files加了单引号,还是不行,windows仍然不认.

想给Program Files文件夹改名,可windows又不让!

..............

 

无奈了,只能在C盘根目录下另又装了一个JDK.

 

        

 

难道真的不要把JDK装到program files下吗?

在已配置 JDK 1.6 环境变量的情况下安装 JDK 1.8,是需要重新配置环境变量的。这是因为不同版本的 JDK 在使用时需要明确指定其路径,以便操作系统或开发工具能够正确识别并调用对应的 Java 版本。 ### 配置多个 JDK 版本的环境变量 为了实现多版本 JDK 的共存与切换,可以采用以下方式设置环境变量: - **定义独立的 JAVA_HOME 变量**:为每个 JDK 版本分别设定一个独立的环境变量,例如 `JAVA_HOME6` 和 `JAVA_HOME8`,分别指向 JDK 1.6 和 JDK 1.8 的安装目录。 - **统一主变量 JAVA_HOME**:将主环境变量 `JAVA_HOME` 设置为引用其中一个具体版本,如 `%JAVA_HOME6%` 或 `%JAVA_HOME8%`,这样只需更改该变量值即可快速切换默认使用的 JDK 版本。 - **更新 PATH 和 CLASSPATH**:确保 `PATH` 包含 `%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;`,而 `CLASSPATH` 包含当前目录 `.` 以及工具库路径 `.;%JAVA_HOME%\lib;%JAVA_HOME%\tools.jar;`[^1]。 示例配置如下所示: ```text 变量名 变量值 JAVA_HOME6 JDK6 的安装路径(例如 D:\jdk1.6.0_45) JAVA_HOME8 JDK8 的安装路径(例如 C:\Program Files\Java\jdk1.8.0_291) JAVA_HOME %JAVA_HOME6% (根据需要切换版本) CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\tools.jar PATH ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; ``` 通过这种方式,可以在不卸载任何 JDK 的情况下,灵活地在多个 Java 版本之间进行切换。 需要注意的是,在 Windows 系统中,JDK 安装程序通常会将 `java.exe`、`javaw.exe` 和 `javaws.exe` 这三个可执行文件复制到 `C:\Windows\System32` 目录下[^1]。此目录在系统路径中的优先级高于用户自定义的 `JAVA_HOME` 变量。这意味着如果在多版本 JDK 安装的情况下未清理该目录中的旧文件,则系统默认运行的 Java 版本可能并非由 `JAVA_HOME` 所指定的版本。 因此,在安装新的 JDK 版本后,建议检查 `C:\Windows\System32` 中是否存在 Java 可执行文件,并根据实际需求决定是否保留这些文件以避免版本冲突。 最后,修改 `JAVA_HOME` 环境变量后,新设置不会自动生效于已经打开的命令行窗口或 IDE,必须重启这些应用程序才能应用更改。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值