Java in PowerShell on Windows 10

背景

win7系统发布后出现了新的命令行PowerShell,微软都称之为POWERshell,足以说明其强大,所以就想让它在windows上取代掉cmd。

why is the powershell powerfull?

但发现之前在cmd中可以运行的java程序在PS(以下都用PS代替powershell)中出现了错误:“找不到或无法加载主类”
这一错误通常是classpath这一系统变量设置有误产生的,但是之前由于在cmd中可以运行,就很难想到这错误依然是和环境变量的设定有关系。

解决方案

  • 按照为cmd运行java的方式去配置各种环境变量,让你的java程序先在cmd中可以运行。

    配置方法

  • 在powershell中输入命令:
    set classpath=.;%classpath%

分析

cmd与powershell的环境变量设置还是有所区别的,暂时不关心这些区别产生的原因。
<think>我们正在将XiaozhiESP32Server全模块从Ubuntu迁移到Windows系统。主要挑战在于Windows环境下服务端的部署(原Ubuntu环境使用Java+MySQL+SpringBoot,而Windows环境需要相应调整),以及ESP32固件编译环境的搭建(原使用ESP-IDF在Linux,Windows可使用ESP-IDF工具链)。步骤分解:1.服务端部署(Windows)-安装JavaJDK11(Windows版)-安装Maven(Windows版)-安装MySQL5.7(Windows版,注意版本兼容性)-配置环境变量-获取项目代码,编译并运行2.配置WebSocket地址(由于Windows没有tail命令,查看日志方式不同)3.ESP32固件编译环境(Windows上安装ESP-IDF)4.配置并烧录ESP32固件(与Ubuntu类似,但使用Windows命令)详细步骤:###一、Windows服务端部署1.**安装依赖**-**JavaJDK11**:从Oracle官网下载Windows版JDK11,安装并设置环境变量`JAVA_HOME`,并将`%JAVA_HOME%\bin`加入`PATH`。-**Maven**:下载Maven的Windows版(zip包),解压并设置环境变量`MAVEN_HOME`,并将`%MAVEN_HOME%\bin`加入`PATH`。-**MySQL5.7**:下载MySQL5.7Windows安装包(注意:必须5.7版本,避免兼容问题)。安装过程中设置root密码,并创建数据库`xiaozhi`。2.**获取项目代码**```cmdgitclonehttps://gitcode.com/gh_mirrors/xia/xiaozhi-esp32-server.gitcdxiaozhi-esp32-server```3.**修改数据库配置**编辑`src/main/resources/application.properties`,修改数据库连接信息:```propertiesspring.datasource.url=jdbc:mysql://localhost:3306/xiaozhispring.datasource.username=rootspring.datasource.password=你的密码```4.**编译项目**```cmdmvncleanpackage-DskipTests```5.**启动服务**```cmdjava-jartarget/xiaozhi-esp32-server-0.0.1-SNAPSHOT.jar```注意:服务启动后,日志会输出到控制台。查找WebSocket地址(原Ubuntu使用`tail-f`,Windows直接查看控制台输出):```WebSocketstartedonws://0.0.0.0:8091/ws/xiaozhi/v1/```6.**开放端口(Windows防火墙)**-打开“WindowsDefender防火墙”->“高级设置”-添加入站规则:允许TCP端口8084和80917.**公网地址转换(与Ubuntu相同)**如果服务器有公网IP,将内网地址`ws://0.0.0.0:8091/ws/xiaozhi/v1/`转换为公网地址`ws://[公网IP]:8091/ws/xiaozhi/v1/`(注意:需确保公网IP的端口映射正确)。###二、ESP32固件编译与烧录(Windows环境)1.**安装ESP-IDF**-按照官方指南安装ESP-IDF工具链(Windows版):[ESP-IDF工具安装器](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup.html)-使用离线安装包(推荐)或在线安装工具。2.**获取固件代码**(假设项目包含ESP32固件代码,或者单独仓库)```cmdgitclone[固件仓库地址]#通常与服务器项目分开```3.**配置固件**-打开ESP-IDF命令行(安装后会在开始菜单创建)```cmdcdesp32-firmware#进入固件目录idf.pyset-targetesp32s3#根据实际芯片型号idf.pymenuconfig```-配置参数:-WiFiSSID和密码-WebSocket服务器地址(使用上一步获取的公网地址)-关闭OTA(如不需要)-确保使用WebSocket协议(原配置可能是HTTP,需修改)4.**编译与烧录**```cmdidf.pybuildidf.pyflash#烧录时需要连接ESP32设备idf.pymonitor#查看设备日志```###三、验证连接-服务端:查看启动控制台,等待ESP32连接日志。-ESP32:通过`idf.pymonitor`查看连接状态。###四、维护操作(Windows调整)-**日志管理**:服务端日志直接输出到控制台(可重定向到文件:`java-jar...>server.log2>&1`),使用文本编辑器或`findstr`命令过滤错误:```cmdfindstr"ERROR"server.log```-**代码更新**:```cmdgitpulloriginmainmvncleanpackage-DskipTests::重启服务(先Ctrl+C停止,再重新启动)```-**数据库备份**:```cmdmysqldump-uroot-pxiaozhi>xiaozhi_backup_%date:~0,4%%date:~5,2%%date:~8,2%.sql```###注意事项-**MySQL版本**:必须使用5.7版本(高版本不兼容),Windows安装时注意选择5.7。-**语音模型**:将模型文件放置在`models/vosk-model/`目录下(与Ubuntu相同)。-**端口占用**:Windows上可能已有程序占用8084或8091端口,可使用`netstat-ano|findstr:8091`查找并结束进程。-**路径问题**:Windows路径使用反斜杠,但在Java配置文件中仍使用正斜杠(如`models/vosk-model`)即可。迁移完成!§§相关问题§§1.如何在Windows上配置ESP-IDF开发环境?2.Xiaozhi服务器在Windows上如何实现开机自启动?3.如何解决Windows防火墙导致的端口访问问题?4.如何备份和恢复MySQL5.7数据库(Windows环境)?</think>### Windows 系统部署 Xiaozhi ESP32 Server 全模块指南 迁移到 Windows 系统需解决以下关键点: 1. **Java/Maven/MySQL 环境适配** 2. **服务端日志获取方式变化** 3. **ESP-IDF 工具链安装** 4. **网络端口配置调整** --- #### 一、服务端部署(Windows 环境) ##### 1. 环境准备 ```powershell # 安装 Chocolatey(Windows 包管理器) Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) # 安装依赖 choco install -y jdk11 maven mysql --version=5.7.41 ``` ##### 2. 数据库配置 ```powershell # 启动 MySQL 服务 net start mysql57 # 登录 MySQL(密码为空) mysql -u root -p ``` ```sql CREATE DATABASE xiaozhi; GRANT ALL PRIVILEGES ON xiaozhi.* TO 'root'@'localhost'; FLUSH PRIVILEGES; ``` ##### 3. 部署服务端 ```powershell git clone https://gitcode.com/gh_mirrors/xia/xiaozhi-esp32-server.git cd xiaozhi-esp32-server mvn clean package -DskipTests ``` ##### 4. 关键配置 - 修改 `src\main\resources\application.properties`: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/xiaozhi?useSSL=false spring.datasource.username=root spring.datasource.password= # 保持为空(Windows MySQL 默认无密码) ``` - **获取 WebSocket 地址**: ```powershell java -jar target\xiaozhi-esp32-server-*.jar | Select-String "WebSocket started" ``` 输出示例:`WebSocket started on ws://0.0.0.0:8091/ws/xiaozhi/v1/` ##### 5. 防火墙配置 ```powershell # 开放端口 netsh advfirewall firewall add rule name="Xiaozhi HTTP" dir=in action=allow protocol=TCP localport=8084 netsh advfirewall firewall add rule name="Xiaozhi WebSocket" dir=in action=allow protocol=TCP localport=8091 ``` --- #### 二、ESP32 客户端部署(Windows) ##### 1. 安装 ESP-IDF 1. 下载 [ESP-IDF Tools Installer](https://dl.espressif.com/dl/esp-idf/) 2. 选择组件: - **ESP-IDF v4.4+** - **Python 3.11** - 勾选 "Add ESP-IDF Tools to PATH" ##### 2. 配置固件 ```powershell # 打开 ESP-IDF 命令行(开始菜单搜索 "ESP-IDF Command Prompt") cd esp32-firmware idf.py set-target esp32s3 idf.py menuconfig ``` 配置项: - **WiFi SSID/Password** → `(Top) > Xiaozhi Configuration` - **WebSocket URL** → 填入服务端公网地址 `ws://[公网IP]:8091/ws/xiaozhi/v1/` - **关闭 OTA** → `(Top) > Component config > ESP HTTPS OTA` → 取消勾选 ##### 3. 编译与烧录 ```powershell idf.py build idf.py -p COM3 flash # COM3 替换为实际串口号 idf.py monitor ``` --- #### 三、验证连接 | 位置 | 验证方式 | |---------------|----------------------------------| | **服务端** | 查看控制台日志:`设备已连接` | | **ESP32** | `idf.py monitor` 输出:`WebSocket Connected!` | | **公网测试** | 使用 [WebSocket 测试工具](https://websocket.org/echo.html) 连接 `ws://[公网IP]:8091/ws/xiaozhi/v1/` | --- #### 四、维护操作(Windows 版) ```powershell # 日志管理 Get-Content .\server.log -Wait # 实时日志 Select-String -Path .\server.log -Pattern "ERROR" # 服务更新 git pull origin main mvn clean package -DskipTests Stop-Process -Name "java" -Force java -jar target\xiaozhi-esp32-server-*.jar # 数据库备份 mysqldump -u root xiaozhi > xiaozhi_backup_$(Get-Date -Format yyyyMMdd).sql ``` > **关键注意事项** > 1. MySQL **必须使用 5.7 版本**([官方存档下载](https://downloads.mysql.com/archives/community/)) > 2. 语音模型放置路径:`.\xiaozhi-esp32-server\models\vosk-model\` > 3. 若使用 **Windows 服务器**,需配置路由器端口转发: > - 外部端口 8084/8091 → 内部服务器IP > 4. 时间同步问题: > ```powershell > w32tm /resync # 强制同步 Windows 时间 > ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值