2009-05-12 5 views
2

그런 일이 가능한지 궁금합니다. 인수를 취하여 콘솔에 출력하는 Java 프로그램이 있습니다. 내가 필요로하는 것은 여러 번 실행하는 것입니다. (jar 파일)은 부드럽게 실행되지만 자바 런타임을 시작하고 멈추는 오버 헤드가 커요. Java 런타임 (또는 VM을 인스턴스화하는 방법), 한 번 호출하는 방법을 잘 모르겠습니다. 그리고 어떻게 든 런타임에 여러 번 연결하고 항아리를 실행합니까?하나의 런타임 인스턴스에서 Java 프로그램 실행

나는 자바 용어에 대한 심각한 무지에도 불구하고 누군가 내 질문에 대답 할 수 있기를 바랍니다. D.

답변

11

JAR의 메인 클래스로 호출하는 래퍼 클래스를 작성하는 간단하고 반복적으로 적절한 인수 AppClass.main()를 호출해야합니다

// wraps class MyWrapped 
class MyWrapper { 

public static void main(String[] args) { 
    for (each set of command-line args) { 
     MyWrapped.main(arguments); 
    } 
} 

가 기억 자바 응용 프로그램의 주() 메소드는 특별한 것이 아니며, 스스로 호출 할 수있는 정적 메소드 일뿐입니다. 적절하게 설계된 경우 여러 스레드가 동시에 호출 할 수도 있습니다.

+0

두 번 투표 할 수 있기를 바랍니다. ;) –

0

코드를 여러 번 실행하는 기본 래퍼를 만드는 것이 더 좋을 수도 있습니다. 그 용어로 생각해보십시오. 클래스 파일을 인스턴스화하고 필요한만큼 메서드를 호출하십시오.

0

아무 이유없이 루프를 실행할 수없는 이유는 무엇입니까?

0

명백한 방법은 인스턴스간에 클래스를 다시로드하지 않습니다. 정적 필드를 수정하면 필드가 다시 초기화되지 않습니다!

문제가있는 경우 다시 처리하여 문제를 해결하십시오. 다른 접근법은 별도의 세그먼트가 서로를 볼 수 없기 때문에 OSGi 컨테이너 기반 솔루션을 조사 할 수 있으므로 각 호출마다 자체적으로 클래스가로드됩니다.

관련 문제