2013-06-06 4 views
0

일부 데이터를 내보내는 Java 응용 프로그램을 작성했습니다. 엑셀 또는 xml 출력 중에서 선택할 수 있습니다. 모든 일이 끝나면 생성 된 파일이 자동으로 열리길 원합니다.xml/jdom을 사용하는 런타임 exec

Excel 항목의 경우 JExcelAPI를 사용하고 XML을 만들려면 JDOM을 사용하십시오.

나는 응용 프로그램이 종료하기 전에 마지막으로 불려 가도록() 메소드 openFile 있습니다

: 나는 엑셀 옵션을 사용하면 파일이 openFile()에서 다음과 같은 출력으로 잘 열립니다

private void openFile(File file) { 

    try { 
     String[] cmds = { "cmd", "/c", file.getAbsolutePath() }; 
     for (String s : cmds) { 
      System.out.println(s); 
     } 

     Runtime rt = Runtime.getRuntime(); 
     Process proc = rt.exec(cmds); 
     int exitVal = proc.waitFor(); 
     System.out.println("Process exitValue: " + exitVal); 

    } catch (Throwable t) { 
     t.printStackTrace(); 
    } 
} 

cmd 
/c 
D:\test.xls 
Process exitValue: 0 

XML 출력을 사용하면 수동으로 파일을 수동으로 열어도 작동하지 않습니다.

cmd 
/c 
D:\test.xml 
Process exitValue: 1 

그래서 나는 두 번 어플은 엑셀 또는 XML 쓰기를 할 하나의 방법을 제외하고는 동일하기 때문에 문제가 어딘가 JDOM을 가진 것 같다. 하지만 지금까지 성공하지 못했습니다. 아무도 이걸 도와 줄 수 있니?

답변

0

test.xml 파일이 유효하면 XML 파일을 실행하는 데 문제가 있다는 JDOM의 오류가 거의 없습니다 ..... 문제는 올바른 종류의 Windows가 없기 때문일 수 있습니다 .xml 파일과의 파일 연결 (또는 원하는 연결이 아님)

WinKey-> R을 눌러 실행 대화 상자를 열고 상자에 cmd를 입력 한 다음 'dos'프롬프트에 cmd /c D:\test.xml을 입력하면 어떻게됩니까? 결과 :

C:\>cmd /c C:\pnp64.xml 

C:\> 

나를 위해 인터넷 익스플로러에서 XML 파일을 열면 무엇을 할 수 있습니까?

EDIT : 명령 행에서 열립니다. 이제 프로세스를 디버깅하려면 명령에서 표준 출력/오류를 캡처해야합니다. 이러한 변경, (... 여기에 게시 아마도과) 검사 오류 및 출력 파일의 내용을했으면

ProcessBuilder pb = new ProcessBuilder(cmds); 
pb.redirectError(new File("C:\TEMP\process.error.log")); 
pb.redirectOutput(new File("C:\TEMP\process.output.log")); 
Process proc = pb.start(); 
int exitVal = proc.waitFor(); 
System.out.println("Process exitValue: " + exitVal); 

: 내가 좋아하는 것을 권장합니다.

+0

notepad ++로 열립니다. 나는 그것의 혼자만을위한 exec 코드를 테스트했고 거기에서 잘 작동한다. – dawastl

+0

프로세스 출력에 대한 세부 정보를 얻는 더 나은 프로세스가 업데이트되었습니다. – rolfl

+0

도움을 주셔서 감사합니다. 나는 문제를 직접 발견했다. XML 문서를 만드는 데 사용 된 FileWriter를 닫지 않았습니다. – dawastl