当前位置: 首页 > news >正文

电脑同时配置java8和java17

在Windows服务器上同时跑Java 8和Java 17的JAR包项目,核心思路就是让两个服务各自使用专属的Java版本,互不干扰。最可靠、最推荐的做法是使用启动脚本(Batch文件),在脚本里明确指定每个服务用的Java路径,完全绕开系统全局的 JAVA_HOME 环境变量。

下面是具体的操作步骤:

🚀 方案一:使用启动脚本(Batch文件)独立运行(最推荐)
这是服务器部署中最灵活、最清晰的方法。每个服务都有自己的启动脚本,脚本里直接指定使用哪个JDK。

📁 第一步:规划目录结构
建议为每个服务创建独立的文件夹,把JAR包、配置、日志和启动脚本都放一起,方便管理。例如:

text
D:\Services
├─ ServiceA_JDK8\ # 需要 Java 8 的服务
│ ├─ serviceA.jar
│ ├─ start_serviceA.bat # Java 8 的启动脚本
│ └─ logs\ # 日志文件
└─ ServiceB_JDK17\ # 需要 Java 17 的服务
├─ serviceB.jar
├─ start_serviceB.bat # Java 17 的启动脚本
└─ logs
📝 第二步:编写启动脚本
在各自的服务目录下创建两个 .bat 文件,内容如下:

start_serviceA.bat (用于Java 8服务)

batch
@echo off
echo ========================================
echo 正在启动 ServiceA (使用 Java 8)
echo ========================================

:: 设置此服务专用的Java 8路径(请替换为你的实际路径)
set “JAVA_HOME=C:\Program Files\Java\jdk1.8.0_xxx”
set “PATH=%JAVA_HOME%\bin;%PATH%”

:: 验证Java版本
echo 使用的Java版本:
java -version

:: 启动JAR包,并指定日志输出
java -jar D:\Services\ServiceA_JDK8\serviceA.jar > D:\Services\ServiceA_JDK8\logs\stdout.log 2>&1

echo 服务A已启动。
pause
start_serviceB.bat (用于Java 17服务)

batch
@echo off
echo ========================================
echo 正在启动 ServiceB (使用 Java 17)
echo ========================================

:: 设置此服务专用的Java 17路径(请替换为你的实际路径)
set “JAVA_HOME=C:\Program Files\Java\jdk-17.0.x”
set “PATH=%JAVA_HOME%\bin;%PATH%”

:: 验证Java版本
echo 使用的Java版本:
java -version

:: 启动JAR包
java -jar D:\Services\ServiceB_JDK17\serviceB.jar > D:\Services\ServiceB_JDK17\logs\stdout.log 2>&1

echo 服务B已启动。
pause
关键点:脚本里的 set “JAVA_HOME=…” 和 set “PATH=%JAVA_HOME%\bin;%PATH%” 这2行,会临时覆盖系统的全局设置,确保后续的 java -jar 命令用的是指定的版本。

http://www.jsqmd.com/news/641946/

相关文章:

  • Qwik 中避免函数自动序列化的最佳实践
  • 从理论到实战:Retinex算法家族(SSR/MSR/MSRCR)在Python中的演进与调优指南
  • pytest框架—mark标记功能
  • Python 基础教程:列表(第9篇)
  • 2026.4.14
  • 从像素到病理报告只需11秒:2026奇点大会现场实测12款医学影像AI引擎,性能TOP3工具链完整拆解(含DICOMv4.0兼容清单)
  • 终极指南:5分钟免费解锁Cursor Pro全部功能,告别请求限制
  • 麻省理工学院全新突破:AI大模型记忆压缩技术让超长推理变成可能
  • 改了三天论文AI率纹丝不动,我是怎么从崩溃到通关的
  • 如何利用 RocketMQ for AI 构建高效、可靠、可扩展的多智能体系统
  • 用Python技能开启副业之路:技术兼职实战指南
  • 用JavaScript写RTS游戏AI:Screeps Arena新手避坑指南(附VSCode配置)
  • 解密Spring Boot微服务中的虚拟线程与RabbitMQ
  • CANoe.Diva实战:基于CDD的UDS诊断自动化测试全流程解析
  • CLIP技术全景解析:从图文对比预训练到零样本泛化的核心机制
  • STM32G474的FLASH保护,你真的用对了吗?从Level 0到Level 2的实战配置与解锁全攻略
  • SpringBoot 实战总结:踩坑与解决方案全记录
  • vue官网例子 讲解2
  • WCH CMSIS-DAP驱动黄色感叹号?别慌,一个轻量级驱动包5分钟搞定
  • 从混凝土到桥梁:手把手教你用Python和LabelImg为裂缝检测任务制作自己的数据集
  • AlienFX Tools:让Alienware设备重获新生的轻量级控制方案
  • 树莓派变身无线AP:桥接模式实战指南
  • 多模态大模型轻量化部署实战(含TensorRT-LLM+ONNX Runtime双路径优化):从24GB显存占用压缩至3.2GB的6个关键断点
  • 更年期慢慢养,乌鸡膏古法膳食暖心好物
  • 告别手动操作!Win10笔记本秒变永久WiFi热点:PS1脚本+任务计划组合方案
  • 天问ESP32C3-Pro语音大模型对话:从硬件连接到云端部署的完整实践
  • STM32CubeMX配置FreeRTOS软件定时器全流程(附osTimerStart避坑指南)
  • 告别混乱的ramdump文件:高通平台linux-ramdump-parser-v2配置与输出文件详解
  • 红外弱小目标检测:评价指标的MATLAB实现与优化
  • 【紧急预警】传统单模态情感API正被快速淘汰——SITS2026定义2026-2028行业准入技术基线