2010-06-28 2 views
0

자바를 사용하여 간단한 콘솔 응용 프로그램을 개발 중입니다. 내 시스템에 현재 실행중인 jar 파일을 표시하고 싶습니다. 다음 코드는 실행중인 모든 프로세스 창을 표시합니다.현재 자바를 사용하여 Windows에서 실행중인 jar 파일을 나열하는 방법은 무엇입니까?

try { 


     String cmds[] = { "cmd", "/c", "tasklist" }; 
     Process myProcess = Runtime.getRuntime().exec(cmds); 
     BufferedReader stdout = new BufferedReader(new InputStreamReader(
       myProcess.getInputStream())); 
     String line = stdout.readLine(); 
     File file = new File("writer.txt"); 
     writer = new BufferedWriter(new FileWriter(file)); 
     while (line != null) { 
      writer.write(line); 
      writer.write("\n"); 
      System.out.println(line); 
      line = stdout.readLine(); 
     } 
     writer.close(); 


    } catch (Exception e) {// Catch exception if any 
     System.err.println("Error: " + e.getMessage()); 
    } 

은 임

`String cmds[] = { "cmd", "/c", "jps" };` 

을 사용하지만, 그 과정을 표시되지 않습니다. 누구든지 제안을 해주십시오. 고마워요.

답변

2

실제로 볼 수있는 것은 Java 가상 머신을 실행하지만 운영 체제는 jvms에서 실행중인 스레드를 볼 수 없습니다.

'jar'파일이 실행 파일이 아닙니다. 그것은 라이브러리 메니 페스트에 추가 항목이있는 자바 라이브러리 일뿐입니다.이 라이브러리는 'main'메소드로 클래스를 명명합니다. 따라서 jar 옵션으로 java를 시작하고 그런 jar를 전달하면 가상 머신은이 메소드를 사용하여 주 스레드를 시작합니다.

그러나 우리는 여전히 동일한 가상 컴퓨터에서 실행되는 여러 개의 추가 스레드를 가질 수 있으며 각 스레드는 응용 프로그램의 개념에 적합 할 수 있습니다. jps를 들어

:

표준 새 번역이 호스트 ID를 지정하지 않고 실행하면, 그것은 로컬 호스트에 계측의 JVM을 찾을 것입니다.

이 유틸리티는 지원되지 않으며, 장래의 JDK의 버전에서 사용하지 못할 수 있습니다. 현재 Windows 98 및 Windows ME 플랫폼에서는 사용할 수 없습니다.

그래서 가상 컴퓨터가 계측되지 않으면 jps는 아무 것도보고하지 않으며 클래스 경로에 있거나 jar 파일을 나열 할 수 있을지 의심 스럽습니다.

관련 문제