我有一个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)
答案 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!