FileOutputStream不适用于计划任务

时间:2014-03-04 11:29:40

标签: java windows-7 jar scheduled-tasks fileoutputstream

我有一个jar文件,双击它时可以正常工作,但是当我安排任务运行它时,FileOutputStream将无效。

它正确执行其他任务,例如发送电子邮件和连接到路由器,但它无法写入文件。

我已经提取了导致该错误的最简单的代码:

package testjar;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestJar {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        FileOutputStream fout = new FileOutputStream("TestJar.log", true);
        fout.write("TestJar ok.".getBytes());
    }
}

我尝试通过调用运行jar的.bat文件来调度,并使用Launch4j从jar中创建一个.exe:它在点击时做的一切都很好,但是当我从计划任务中调用它时它没有'写这个文件。 (我正在使用Window7 Professional)

1 个答案:

答案 0 :(得分:0)

与建议AnatolyG一样,它可以指定日志的完整路径! (我想知道为什么......但它确实有效,这就足够了!)

所以,这是一个使上述代码工作的例子:

public static void main(String[] args) throws FileNotFoundException, IOException, URISyntaxException {
    CodeSource codeSource = TestJar.class.getProtectionDomain().getCodeSource();
    File jarFile = new File(codeSource.getLocation().toURI().getPath());
    String jarDir = jarFile.getParentFile().getPath();
    FileOutputStream fout = new FileOutputStream(jarDir+"/JarTest.log", true);
    fout.write(jarDir.getBytes());
}

感谢AnatolyG!