windows下通过java运行jar,当前目录默认是java目录的问题
为了能快速了解并处理您的问题,请提供以下基础信息:面板、插件版本:7.9.0免费版本系统版本:windows server 2019 1809
问题描述:启动了java后,java程序的默认当前目录是 java.exe所在的目录。之前在cmd下运行的时候需要先切换到网站目录,在宝塔下需要如何操作?
相关截图(日志、错误):2023-10-28 22:56:50.594 INFO 9976 --- [ main] xxxx.SpringBootApp : Starting SpringBootApp v0.1.2 on xxx with PID 9976 (D:\web\jar\xxxx.jar started by xxx$ in D:\BtSoft\panel)其中xxxx是app的名字,xxx是电脑名。
而之前在cmd下运行的时候可以通过cd命令切换到网站目录,然后再运行java xxxx.jar来解决。
本帖最后由 宝塔用户_gmsnhd 于 2023-10-29 09:39 编辑
在D:\BtSoft\springboot\vhost\scripts 下面找到了 xxxx.py 然后修改了里面的
jar_work_dir = os.path.dirname(os.path.realpath(xxxx.jar的文件全名))
subprocess.Popen(cmd,stdout=out,cwd=jar_work_dir)
可是重新启动站点,这个文件又被改回去了。能改哪里一劳永逸吗?
你们建议都是用什么守护软件来守护这个java程序? 是windows服务吗? class/projectModel/javaModel的start_project的project_cmd 后面加入
project_jar = project_find["project_config"]['project_jar']
修改后代码片段如下:
if project_find['project_config']['java_type']=='springboot':
project_cmd=project_find["project_config"]['project_cmd']
project_jar = project_find["project_config"]['project_jar']
# 前置准备
log_file = project_find["project_config"]['logs']
pid_file= project_find["project_config"]['pids']
# 启动脚本
cmd = project_cmd
start_cmd = '''#!/usr/bin/python
# coding: utf-8
# Date 2021/12/14
#coding: utf-8
import os,sys
panelPath = os.getenv('BT_PANEL')
os.chdir(panelPath)
if not '/class/' in sys.path:
sys.path.insert(0,panelPath + "/class/")
import public
import subprocess
pid_file="{pid_file}"
log_file="{log_file}"
cmd="{cmd}"
jar_work_dir = os.path.dirname(os.path.realpath("{jarFileName}"))
with open(log_file,"a") as out:
process = subprocess.Popen(cmd,stdout=out,cwd=jar_work_dir)
pid = process.pid
public.WriteFile(pid_file,str(pid))
'''.format(pid_file=pid_file,log_file=log_file,cmd=cmd,jarFileName=project_jar)
实测日志里面的路径变对了。
页:
[1]