2013-05-21 2 views
4

javafx 응용 프로그램 용 설치 프로그램을 만들려면 tutorial을 따라야합니다. 그리고 예상대로 설치 프로그램을 만듭니다.런타임에 java.exe가 포함되어 있음

MyApp를

+app 

    +runtime 

    +MyApp.exe 

    +MyApp.ico 

런타임 Java 런타임이 포함

가 만드는 디렉토리 구조

이있다. 하지만 문제는 내 응용 프로그램이 일부 Java 프로세스를 만들고 java.exe의 경로가 필요하다는 것입니다. 그러나 위의 폴더 런타임을 탐색 할 때 java.exe가 포함되어 있지 않습니다.

런타임

+jre 

    +bin 

     +java.dll 

      missing java.exe 

이 어떻게 다른 자바 프로세스를 시작하는 데 사용할 수 있도록의 java.exe의 경로를 얻는다. 또는 java.dll에서 Java 프로세스를 시작하는 방법은 무엇입니까?

PS : This 링크는 동일한 질문을하지만 대답하지 않습니다.

+0

dll을 사용하고 새 실행 파일을 실행하려면 JNI 응용 프로그램을 크레이트해야합니다. – Jayan

+0

아니요. 런타임에 java.exe를 포함시키는 방법이 있습니다. thta 솔루션을 찾고 있습니다. – Jatin

+0

태그가 javax 및 패키지로 업데이트되었습니다. 이것은 실제 자바가 아닙니다 – Jayan

답변

2

Oracle Java Deployment Team의 Native Packaging Cookbook on Fine Tuning the Application Bundle에는 자체 포함 응용 프로그램에 포함될 JRE 조각을 사용자 지정하는 방법에 대한 지침이 포함되어 있습니다.

거 야 그냥 복사하고 원본 링크가 소모 될 경우 여기에 관련 섹션 붙여 넣기 : 당신이 설치 패키지를 생성하는 패키징 도구를 사용하는 경우 응용 프로그램 이미지를 조정할 필요가있을 수

을 설치 프로그램에 래핑되기 전에. 왜? 예를 들어, 응용 프로그램에 서명 할 수 있으므로 OS에 신뢰할 수없는 것으로 보입니다 (예 : Mac OS X Gatekeeper를 기쁘게하기).

기본적으로 자체 포함 된 응용 프로그램에는 Java Runtime의 전체 사본이 포함되어 있지 않습니다. 필수 구성 요소 집합 만 포함합니다. 이 방법을 사용한 이유 중 하나는 패키지 크기를 줄이기 위해서입니다. 그러나 응용 프로그램이 이러한 선택적 구성 요소에 종속 될 수있는 상황이 있으며이 경우 해당 응용 프로그램을 개인 런타임에 추가 할 방법이 필요합니다. 예를 들어 jre/lib/ext/sunjce_provider.jar가없는 경우 https 연결이 작동하지 않습니다.

현재 응용 프로그램 이미지가 채워진 후 실행되는 사용자 지정 구성 스크립트를 제공하여이 작업을 수행 할 수 있습니다. 아이콘과 함께 위의 예제에서와 같이 스크립트 파일의 이름을 찾은 다음 패키지 도구가 찾을 수있는 위치에 세부 출력을 표시해야합니다. 스크립팅 언어 역시 플랫폼에 따라 다릅니다. 현재 우리는 Mac/Linux 용 셸과 Windows 용 Windows Script 만 지원합니다.

응용 프로그램 이미지의 위치는 어떻게 알 수 있습니까? 현재 사용자 정의 스크립트는 구성 파일이 저장된 디렉토리에서 실행되지만 응용 프로그램 이미지는 상대 플랫폼 특정 경로를 사용하여 액세스 할 수 있습니다. 자세한 출력 또는 환경 변수 JAVAFX_ANT_DEBUG를 true로 설정하여 중간 경로 빌드 아티팩트를 보존하려면이 경로를 파생시킬 수 있습니다.

다음은 Windows 플랫폼에서 jre/lib/ext/sunjce_provider.jar을 MyApp의 응용 프로그램 패키지에 추가하는 데 사용할 수있는 샘플 스크립트입니다 (John Petersen 기고).Javascript를 사용하여 스크립트를 작성하지만 Windows 스크립트 용 VBScript를 사용할 수도 있습니다.

<?xml version="1.0" ?> 
<package> 
    <job id="postImage"> 
    <script language="JScript"> 
    <![CDATA[ 
     var oFSO = new ActiveXObject("Scripting.FileSystemObject"); 
     var oFolder = oFSO.getFolder("."); 
     var from = oFolder.path + "\\MyApp\\app\\sunjce_provider.jar"; 
     var to = oFolder.path + "\\MyApp\\runtime\\jre\\lib\\ext"; 
     if (!oFSO.FolderExists(to)) { 
      oFSO.CreateFolder(to); 
     } 
     to += "\\"; 
     oFSO.CopyFile(from, to); 
    ]]> 
    </script> 
    </job> 
</package> 

응용 프로그램 번들로 JRE 설치하지만 비슷해야 java.exe을 포함하여 다른 파일을 복사하는 과정에서 sunjce_provider.jar 파일을 복사 위의 설명합니다.

사용자 정의 할 번들을 처음 만드는 방법에 대한 자세한 내용은 JavaFX Deployment Guide입니다.

관련 문제