2014-03-04 7 views
0

두 번 클릭하면 제대로 작동하는 jar 파일이 있지만이를 실행하기위한 작업을 예약하면 FileOutputStream이 작동하지 않습니다.FileOutputStream이 예약 된 작업에서 작동하지 않습니다.

이메일을 보내고 라우터에 연결하는 등의 작업은 올바르게 수행되지만 파일에는 쓸 수 없습니다. 함께 항아리에서이 .exe를하는 것도 병을 실행하고 .bat 파일을 호출하여

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()); 
    } 
} 

내가 일정을 시도했다 :

은 그 오류를 제공 간단한 코드를 추출했습니다 Launch4j : 클릭하면 모든 것이 잘되지만, 예약 된 작업에서 호출하면 파일을 쓰지 않습니다. (Window7 Professional에서 작업 중입니다.)

+0

사용자 (작업 작성자)에 대한 권한을 확인 했습니까? – Parth

+0

나는 모든 권한을 가진 다른 PC에서 그것을 시도했다. 아무 것도 바뀌지 않는다. – T30

+1

예외가 보이거나 폴더에 "TestJar.log"파일이 보이지 않습니까? "전체"파일 이름을 지정하지 않았고 "현재"폴더가 응용 프로그램을 실행하는 방법에 따라 다르므로 두 번째 파일 인 경우 올바른 폴더를 찾고 있는지 확인하십시오. 또는 파일의 전체 이름을 지정하십시오. – AnatolyG

답변

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을!

관련 문제