当前位置:论坛首页 > Windows面板 > 求助

windows下通过java运行jar,当前目录默认是java目录的问题

发表在 Windows面板2023-10-28 23:07 [复制链接] 2 851

为了能快速了解并处理您的问题,请提供以下基础信息:
面板、插件版本: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来解决。

使用道具 举报 只看该作者 回复
发表于 2023-10-29 09:26:17 | 显示全部楼层
本帖最后由 宝塔用户_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服务吗?
使用道具 举报 回复 支持 反对
发表于 2023-10-29 10:14:45 | 显示全部楼层
class/projectModel/javaModel的start_project的project_cmd 后面加入

            project_jar = project_find["project_config"]['project_jar']

修改后代码片段如下:
  1.         if project_find['project_config']['java_type']=='springboot':
  2.             project_cmd=project_find["project_config"]['project_cmd']
  3.             project_jar = project_find["project_config"]['project_jar']
  4.             # 前置准备
  5.             log_file = project_find["project_config"]['logs']
  6.             pid_file= project_find["project_config"]['pids']
  7.             # 启动脚本
  8.             cmd = project_cmd
  9.             start_cmd = '''#!/usr/bin/python
  10. # coding: utf-8
  11. # Date 2021/12/14
  12. #coding: utf-8
  13. import os,sys
  14. panelPath = os.getenv('BT_PANEL')
  15. os.chdir(panelPath)
  16. if not '/class/' in sys.path:
  17.     sys.path.insert(0,panelPath + "/class/")
  18. import public
  19. import subprocess

  20. pid_file="{pid_file}"
  21. log_file="{log_file}"
  22. cmd="{cmd}"
  23. jar_work_dir = os.path.dirname(os.path.realpath("{jarFileName}"))
  24. with open(log_file,"a") as out:
  25.     process = subprocess.Popen(cmd,stdout=out,cwd=jar_work_dir)
  26.     pid = process.pid
  27.     public.WriteFile(pid_file,str(pid))
  28. '''.format(pid_file=pid_file,log_file=log_file,cmd=cmd,jarFileName=project_jar)
复制代码


实测日志里面的路径变对了。
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

企业版年付运维跟进群

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急问题处理

论坛响应时间:10分钟

问题处理方式:1对1处理(优先)

工作时间:白班:9:00 - 18:00

工作时间:晚班:18:00 - 24:00

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表