나는 앱에 두 개의 메인 클래스를 가지고있다. Eclipse export 함수를 사용하여 runnable jar 파일에 패키지하면 기본 기본 클래스를 선택해야한다.런타임시 runnable jar의 메인 클래스 선택
런타임시 jar에서 기본이 아닌 기본 클래스에 액세스하는 방법이 있습니까?
나는 앱에 두 개의 메인 클래스를 가지고있다. Eclipse export 함수를 사용하여 runnable jar 파일에 패키지하면 기본 기본 클래스를 선택해야한다.런타임시 runnable jar의 메인 클래스 선택
런타임시 jar에서 기본이 아닌 기본 클래스에 액세스하는 방법이 있습니까?
java -cp myapp.jar com.example.Main1
과 java -cp myapp.jar com.example.Main2
을 통해 모두 액세스 할 수 있습니다. jar의 기본 기본 클래스는 java -jar myapp.jar
을 통해 앱을 호출 할 때 사용됩니다.
자세한 내용은 JAR_(file_format)을 참조하십시오. 이클립스에서 main 클래스를 선택하면 jar 파일 내부에 Main-Class: myPrograms.MyClass
META-INF/MANIFEST.MF
의 jar 매니페스트 내부에 설정됩니다.
예, 가능합니다. 각각의 밑에는 인자를 기반으로 원하는 클래스/메소드를 실행하는 main 메소드를 가진 다른 클래스를 추가 할 수 있습니다.
예.
public static void main(String... args) {
if ("foo".equals(args[0])) {
Foo.main(args);
} else if ("bar".equals(args[0])) {
Bar.main(args);
}
}
당신이로 사용할 수
은 다음 (자신과 같은 args.length
등 명백한 검사 추가하는 것을 잊지 마세요) : 잘 설계된 경우
java -jar YourJar.jar foo
이 그러나 수를 다른 클래스의 main()
메소드를 불필요하게 만드십시오. 예 :
private static Map<String, Action> actions = new HashMap<String, Action>();
static {
actions.put("foo", new Foo());
actions.put("bar", new Bar());
}
public static void main(String... args) {
actions.get(args[0]).execute();
}
: 추상적으로
이 더, 당신이 그 (것)이
void execute()
일부Action
인터페이스를 구현하고Map
에서 그들을 잡아 수 있도록 고려할 수 있습니다 (/ 다른 블록이있는 경우 제거합니다) 이것은 사용자 정의 클래스 로더에로드를 위임 할 때 Eclipse Runnable 익스포트와 함께 작동하지 않습니다. –클래스 경로 특성이있는 경우이 작업을 수행 할 수 없습니다. –