调用使用批处理文件调度的java类文件,但似乎什么都没有发生

调用使用批处理文件调度的java类文件,但似乎什么都没有发生,java,Java,使用批处理文件调用java类文件可以很好地工作 下面是正在工作的代码 public class TestA { public static void main(String[] args) { new TestA().printA(); } public void printA(){ System.out.println("This is A..."); try { File file = new File("D:/FileA.txt");

使用批处理文件调用java类文件可以很好地工作

下面是正在工作的代码

public class TestA {

public static void main(String[] args) {
    new TestA().printA();
}

public void printA(){
    System.out.println("This is A...");
     try {
         File file = new File("D:/FileA.txt");
         boolean fvar = file.createNewFile();
         if (fvar){
              System.out.println("File has been created successfully");
         }
         else{
              System.out.println("File already present at the specified location");
         }
        } catch (IOException e) {
            System.out.println("Exception Occurred:");
            e.printStackTrace();
      }
}
}
上面的代码与此相同,如果我使用任务执行器将其设置为调度,并尝试使用批处理文件调用同一个文件,那么它将不起作用(我的意思是,这里没有创建文件)。我需要你的帮助

带调度的代码:

public class TestD implements Runnable {

    private ScheduledExecutorService executor = null;

    @Override
    public void run() {
        try {
             File file = new File("D:/FileD.txt");
             boolean fvar = file.createNewFile();
             if (fvar){
                  System.out.println("File has been created successfully");
             }
             else{
                  System.out.println("File already present at the specified location");
             }
            } catch (IOException e) {
                System.out.println("Exception Occurred:");
                e.printStackTrace();
          }
    }

    public void executeScheduler() throws SQLException {
        executor.scheduleAtFixedRate(this, 2, 5, TimeUnit.SECONDS);
    }

    public static void main(String args[]){
        TestD testD = new TestD();
        try {
            testD.executeScheduler();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}
我编写代码是为了创建一个文件,只是为了测试我的代码是否从批处理文件调用,因为我无法立即观察cmd提示符中显示的system out语句

编辑:

出现此问题的原因是由于
NullPointerException
,但异常无法捕获,因为我正在使用批处理调用文件,cmd窗口未显示错误,或者它可能显示了错误,但不可人为捕获,并且窗口在几秒钟内关闭。因此,我不认为这个问题与

问题是由于变量未初始化并抛出了一个在我的例子中无法捕获的
NullPointerException。添加了一个构造函数代码来初始化对象,它开始正常工作

正在运行的已修改代码

public class TestD implements Runnable {

    private ScheduledExecutorService executor = null;

    public TestC(){
        executor = Executors.newScheduledThreadPool(1);
    }

    @Override
    public void run() {
        try {
             File file = new File("D:/FileD.txt");
             boolean fvar = file.createNewFile();
             if (fvar){
                  System.out.println("File has been created successfully");
             }
             else{
                  System.out.println("File already present at the specified location");
             }
            } catch (IOException e) {
                System.out.println("Exception Occurred:");
                e.printStackTrace();
          }
    }

    public void executeScheduler() throws SQLException {
        executor.scheduleAtFixedRate(this, 2, 5, TimeUnit.SECONDS);
    }

    public static void main(String args[]){
        TestD testD = new TestD();
        try {
            testD.executeScheduler();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

executor.scheduleAtFixedRate(这个,2,5,TimeUnit.SECONDS)行,您可能会得到一个
NullPointerException
因为您从未初始化过
executor
。感谢luk2302&devpuh,这是因为没有发生初始化,我无法找到它,因为我无法从cmd窗口捕获日志。添加了
executor=Executors.newScheduledThreadPool(1)在构造函数中,它开始工作。我可以知道为什么1否决了这个问题吗?我已经提供了寻求帮助的所有必要细节。答案可能是愚蠢或艰难的,但希望这不是否决投票的原因。你没有提供异常+stacktrace,你只是说“不工作”。@luk2302如果我能够跟踪stacktrace,我可能会通过查看异常来解决问题。我还提到,我已经编写了一个代码来创建一个文件,以检查我的代码是否被调用。希望我自己清楚。