繁体   English   中英

jar没有在命令提示符下输出,但在eclipse中工作正常

[英]jar is not giving output on command prompt but working fine in 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();
            }
        }

    }

}

您可以在上面的String变量cmdWithArg中看到。 当我从eclipse运行它时会给出输出,但是当我从eclipse与其他目的地制作jar时,这将不会给出任何输出我们使用我们的自定义jar输出IVLGenericAlerts.jar .hope你理解

解决了问题我们需要在命令提示符下访问文件夹时放入双引号“”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM