#!/usr/bin/env python3 # -*- coding: utf-8 -*- r"""P12-B(续):Java 后端启动器(灰度期与 Python 并存,端口 28120)。 用法:python app_backEnd/backend-java/run_java.py [--port 28120] 先 `python build_offline.py` 生成 target/classes 与 target/lib,再用 `java -cp` 起(离线,不依赖 mvn 打包)。 """ from __future__ import annotations import argparse import os import pathlib import subprocess import sys HERE = pathlib.Path(__file__).resolve().parent JAVA = pathlib.Path(r'D:\Program Files\Java\jdk1.8.0_202\bin\java.exe') def main() -> int: ap = argparse.ArgumentParser() ap.add_argument('--port', default='28120') a = ap.parse_args() classes = HERE / 'target/classes' lib = HERE / 'target/lib' if not classes.exists(): print('缺少 %s —— 先跑 build_offline.py' % classes) return 2 cp = os.pathsep.join([str(classes)] + ([str(lib / '*')] if lib.exists() else [])) exe = JAVA if JAVA.exists() else 'java' env = dict(os.environ, SERVER_PORT=a.port) print('启动:', exe, '-cp', cp[:80] + '…', 'GuanlanBackendApplication') return subprocess.call([str(exe), '-Dfile.encoding=UTF-8', '-cp', cp, 'com.guanlan.backend.GuanlanBackendApplication'], cwd=str(HERE), env=env) if __name__ == '__main__': raise SystemExit(main())