#!/bin/bash # ============================================ # 启动 Backend API(Spring Boot, dev profile) # 端口: 20600 MySQL: 127.0.0.1:3306/java_dev # ============================================ set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" cd "$SCRIPT_DIR/backend" echo "📦 Working dir: $(pwd)" # ── 自动定位 Java ────────────────────────── find_java() { # 1. 系统 java if /usr/libexec/java_home &>/dev/null; then echo "$(/usr/libexec/java_home)/bin/java" return fi # 2. Homebrew (Apple Silicon) for p in /opt/homebrew/opt/openjdk*/bin/java /opt/homebrew/opt/openjdk/bin/java; do [ -x "$p" ] && echo "$p" && return done # 3. Homebrew (Intel) for p in /usr/local/opt/openjdk*/bin/java /usr/local/opt/openjdk/bin/java; do [ -x "$p" ] && echo "$p" && return done # 4. SDKMAN [ -n "$SDKMAN_DIR" ] && ls "$SDKMAN_DIR/candidates/java/current/bin/java" 2>/dev/null && \ echo "$SDKMAN_DIR/candidates/java/current/bin/java" && return # 5. PATH(排除 macOS 占位符 /usr/bin/java) local j j=$(command -v java 2>/dev/null) if [ -n "$j" ]; then # 检测是否为 macOS 占位符(会输出 Unable to locate) if "$j" -version 2>&1 | grep -q "Unable to locate"; then : # 是占位符,跳过 else echo "$j" && return fi fi echo "" } JAVA_BIN=$(find_java) if [ -z "$JAVA_BIN" ]; then echo "" echo "❌ 未找到 Java 运行环境。请先安装 JDK 11:" echo " brew install openjdk@11" echo " 然后按照提示设置 JAVA_HOME 后重试。" exit 1 fi JAVA_VER=$("$JAVA_BIN" -version 2>&1 | head -1) echo "☕ Java: $JAVA_BIN" echo " 版本: $JAVA_VER" echo "" export JAVA_HOME="$(dirname $(dirname $JAVA_BIN))" echo "🚀 Starting crmeb-admin with profile=dev ..." echo "" ./mvnw spring-boot:run \ -pl crmeb-admin \ -am \ -DskipTests \ -Dspring-boot.run.profiles=dev \ 2>&1