| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /*
- * Copyright (c) 2021-2025, LXQ All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * Neither the name of the com developer nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * Author: LXQ (609827073@qq.com)
- */
- package com.lxq.daemon.quartz.util;
- import cn.hutool.core.util.StrUtil;
- import com.lxq.daemon.quartz.exception.TaskException;
- import com.lxq.daemon.quartz.entity.SysJob;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Component;
- import java.io.File;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * 定时任务可执行jar反射实现
- *
- * @author LXQ
- */
- @Slf4j
- @Component("jarTaskInvoke")
- public class JarTaskInvoke implements ITaskInvoke {
- @Override
- public void invokeMethod(SysJob sysJob) throws TaskException {
- ProcessBuilder processBuilder = new ProcessBuilder();
- File jar = new File(sysJob.getExecutePath());
- processBuilder.directory(jar.getParentFile());
- List<String> commands = new ArrayList<>();
- commands.add("java");
- commands.add("-jar");
- commands.add(sysJob.getExecutePath());
- if (StrUtil.isNotEmpty(sysJob.getMethodParamsValue())) {
- commands.add(sysJob.getMethodParamsValue());
- }
- processBuilder.command(commands);
- try {
- processBuilder.start();
- }
- catch (IOException e) {
- log.error("定时任务jar反射执行异常,执行任务:{}", sysJob.getExecutePath());
- throw new TaskException("定时任务jar反射执行异常,执行任务:" + sysJob.getExecutePath());
- }
- }
- }
|