플랫폼 독립성을 갖춘 별도의 프로세스에서 Java 애플리케이션 실행
Java 개발 영역에서는 애플리케이션을 별도의 프로세스에서 실행하는 동시에 플랫폼 독립성을 유지합니다. 이는 다음과 같은 질문을 제기합니다. 플랫폼 제한을 초월하여 정규화된 이름을 지정하여 Java 애플리케이션을 별도의 프로세스에 로드할 수 있습니까?
현재 제한
전통적으로 Java 애플리케이션은 플랫폼별 명령을 호출하는 Runtime.getRuntime().exec(COMMAND) 메서드를 사용하여 실행됩니다. 이 접근 방식은 교차 플랫폼 호환성에 대한 과제를 제시합니다.
이상적인 솔루션
이상적인 시나리오에는 애플리케이션 클래스 이름을 받아들이고 이를 실행하는 단순화된 메서드가 포함됩니다. 다음 구성의 예시처럼 별도의 프로세스:
EXECUTE.application(CLASS_TO_BE_EXECUTED);
플랫폼 독립적 접근법
이전 응답에서 영감을 얻어 Java의 시스템 속성을 활용하여 플랫폼 독립적인 방식으로 Java 명령 경로 및 클래스 경로에 관한 중요한 정보를 얻을 수 있습니다. 다음 코드 조각은 이 접근 방식을 보여줍니다.
public final class JavaProcess { private JavaProcess() {} public static int exec(Class klass, List<String> args) throws IOException, InterruptedException { String javaHome = System.getProperty("java.home"); String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; String classpath = System.getProperty("java.class.path"); String className = klass.getName(); List<String> command = new LinkedList<>(); command.add(javaBin); command.add("-cp"); command.add(classpath); command.add(className); if (args != null) { command.addAll(args); } ProcessBuilder builder = new ProcessBuilder(command); Process process = builder.inheritIO().start(); process.waitFor(); return process.exitValue(); } }
이 메서드를 호출하려면 간단한 명령을 사용합니다.
int status = JavaProcess.exec(MyClass.class, args);
문자열 표현 대신 실제 클래스를 전달하면 이 접근 방식이 성공하려면 클래스가 이미 클래스 경로에 있어야 한다는 사실을 활용하세요.
위 내용은 플랫폼 독립성을 갖춘 별도의 프로세스에서 Java 애플리케이션을 실행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!