JAR不是在命令提示符上给出输出,而是在Eclipse中正常工作



我制作了一个调度程序,用于安排某些任务

public class CronTriggerApp {
@SuppressWarnings("rawtypes")
public static void main(String[] args) throws Exception {
    System.out.println("****************************************************************************");
    System.out.println("*                                                                          *");
    System.out.println("* Note : Please Place Jar and Properties file in same Folder               *");
    System.out.println("*                                                                          *");
    System.out.println("****************************************************************************");
    Properties cronProp = Utility.getPropFileData();
    Set set = cronProp.entrySet();
    Iterator itr = set.iterator();
    while (itr.hasNext()) {
        Map.Entry entry = (Map.Entry) itr.next();
        String propKey = (String)entry.getKey();
        String propValue = (String)entry.getValue();
        String timeArr[] = propValue.split(":");
        String seconds = timeArr[2];
        String minuts = timeArr[1];
        String hour = timeArr[0];
        String cronExp = seconds.trim()+" "+minuts.trim()+" "+hour.trim()+" "+"? "+ "* "+ "MON-FRI";
        System.out.println("Is Valid Time Declaration: "+CronExpression.isValidExpression(cronExp));
        if(CronExpression.isValidExpression(cronExp)) {
            JobDataMap map = new JobDataMap();
            map.put("TAG", propKey);
            JobKey jobKey = new JobKey("jobObj"+propKey, "group"+propKey);
            JobDetail jobObj = JobBuilder.newJob(ScheduleTask.class).withIdentity(jobKey).setJobData(map).build();
            //CRON_SCHEDULE = 0 46 11,12 ? * MON-FRI
            Trigger trigger =   TriggerBuilder.newTrigger().withIdentity("TriggerName"+propKey, "group"+propKey)
                                .withSchedule(CronScheduleBuilder.cronSchedule(cronExp)).build();
            Scheduler scheduler = new StdSchedulerFactory().getScheduler();
            scheduler.start();
            scheduler.scheduleJob(jobObj, trigger);
        }else {
            System.out.println("Please Provide Time in HOUR:MINUTS:SECONDS[(0-23):(1-59):(1-59)] Formate for "+propKey);
        }
    }

}

当触发器执行时,下面称为

  public class ScheduleTask implements Job {

    @SuppressWarnings("static-access")
    public void execute(JobExecutionContext arg) throws JobExecutionException{
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
        LocalDateTime now = LocalDateTime.now();
        System.out.println("Today's Date time : "+dtf.format(now));
        OutputStream stdin = null;  
        BufferedReader stdError = null;
        BufferedReader stdInput = null;
        JobDataMap jobDataObj = arg.getMergedJobDataMap();
        String tag = (String)jobDataObj.get("TAG");
        System.out.println(tag);
        //"OB" "Opening  Bell" "Sensex:45,778,Nifty:75,888"
        String headerAndmessage = SchedulerDto.pshNotification(tag);
        String argumentParam = tag+" "+headerAndmessage;
        Hashtable<String, String> hashTable = new Hashtable<String, String> ();
        hashTable.put("REQDATA",headerAndmessage);
        hashTable.put("ACTION","I");
        String uniqueId = SchedulerDto.reqRespLog(hashTable);

        File file = new File("");
        String filepath = file.getAbsolutePath()+file.separator+"IVLGenericAlerts.jar";
        String cmdwithArg =" java -jar " +filepath+" "+argumentParam ;
        System.out.println("command and jar path detail with database response: "+cmdwithArg);
        try {
            // suppose cmdWithArg  is java -jar D:\user_workspace\IVLGenericAlerts.jar 
            **Process process = Runtime.getRuntime().exec(cmdwithArg);**
            stdin = process.getOutputStream ();  
            stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));

            System.out.println("Here is the standard output of the command:");
            String lastLine = null;
            String currentLine = null;
            System.out.println("is output" + (currentLine = stdInput.readLine()) != null);
            while ((currentLine = stdInput.readLine()) != null) {
                lastLine = currentLine;
                System.out.println("abc");
                System.out.println(currentLine);
            }
            System.out.println("before xml");
            String xmlToJson = "<?xml version="1.0" ?>"+lastLine;
            JSONObject xmlJSONObj = XML.toJSONObject(xmlToJson);
            String jsonPrettyPrintString = xmlJSONObj.toString();
            JSONObject jsonObject = new JSONObject(jsonPrettyPrintString);
            System.out.println(jsonObject);
            JSONObject enp = (JSONObject)jsonObject.get("Envelope");
            JSONObject Body = (JSONObject)enp.get("Body");
            JSONObject RESULT = (JSONObject)Body.get("RESULT");
            Object SUCCESS = RESULT.get("SUCCESS");
            Object RecipientId = RESULT.get("RecipientId");
            Object ORGANIZATION_ID = RESULT.get("SUCCESS");

            hashTable.put("ACTION","U");
            Map<String, String> hm = new HashMap<String, String>();
            hm.put("SUCCESS", SUCCESS.toString());
            hm.put("RecipientId", RecipientId.toString());
            hm.put("ORGANIZATION_ID", ORGANIZATION_ID.toString());
            hashTable.put("RESPDATA",hm.toString());
            hashTable.put("UNIQUEID", uniqueId);
            SchedulerDto.reqRespLog(hashTable);
            //System.out.println(hashTable.toString());

            System.out.println("Here is the standard error of the command (if any):n");
            System.out.println("in error");
            stdError = new BufferedReader(new  InputStreamReader(process.getErrorStream()));
            while ((currentLine = stdError.readLine()) != null) {
                System.out.println(currentLine);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            try {
                stdin.close();
                stdError.close();
                stdInput.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

您可以在上面的类字符串变量CMDWITHARG中看到。当我从Eclipse运行它时,这将产生输出,但是当我用其他目的地从Eclipse制作Jar Jar时,这将不会给出任何输出,我们将使用自定义JAR用于输出 ivlgenericalerts.jars.jar .hope。/p>

解决问题,我们只需要放置双引号"当我们访问命令提示符中的文件夹

最新更新