JavaWebStart를 사용하여 SWT 제작

SWT 프로그램을 만들려면 먼저 SWT 프로그램을 JAR 파일로 포장해야 한다. SWT 프로그램은 외부 JAR 패키지를 사용하기 때문에 포장할 때 외부 JAR 패키지를 도입해야 한다.이 단계에서 많은 방법을 시도해 보았지만 늘 성공하지 못했다. 인터넷에서 검색해 보니 수동으로 처리하는 자료가 매우 적었다. 대부분은fat-jar 플러그인을 설치한 다음에 플러그인으로 자동으로 처리한다고 소개했다.내가 N번을 시험한 후에 마지막으로 사용할 외부 JAR 패키지를 자신의 프로젝트의 JAR 패키지에서 모두 풀고 JAR 패키지의 루트 디렉터리로 풀면 된다. 드디어 성공적으로 실행할 수 있다.다음은 SWT 프로그램을 발표하는 것입니다. JavaWebStart로 SWT 프로그램을 발표하는 것은 매우 간단합니다. 배워야 할 내용은 jnlp 파일의 작성뿐입니다.발표 단계는 다음과 같습니다.
1. 웹 프로젝트를 만들고 웹 프로젝트 루트 디렉터리에 jnlp 파일을 추가합니다.예를 들면 다음과 같습니다.
 
<?xml version="1.0" encoding="UTF-8"?> 
<!--codebase                URL,   icon/jar       URL   .--> 
<jnlp codebase="http://127.0.0.1:8081/webstart">  
    <information> 
        <!--  "  "-"  "     "javaws" "javaws -viewer"  Web Start,           webstart    --> 
        <!-- title :       vendor:    title/vendor     ,     "javaws -viewer"               (Java Application Cache Viewer) -->
      <title>HelloWorld</title> 
        <vendor>Lively Corporation</vendor> 
        <description>HelloWorld Test Example for WebStart.</description> 
        <!--homepage :              URL, help   ,   description  -->
        <homepage href="http://127.0.0.1:8081/webstart/index.html"/> 

        <!--icon                   ,       webstart                   ,    GIF/JPEG  ,      --> 

        <icon href="./images/logo.jpg"/> 

        <!--splash  sun          webstart       ,          ,      --> 

        <icon kind="splash" href="./images/logo.jpg"/> 
        <!--       ,    javaws -offline  --> 
        <offline-allowed/> 
    </information> 
    <resources> 
        <!--           j2se  ,     1.5+,     1.4,    jnlp        j2se  --> 
        <j2se version="1.5+"/> 
        <!--          jar  (  ,               ),          , icons/configuration files,    getResource    --> 
        <jar href="./jar/jws/helloworld.jar"/> 
    </resources> 
    <!--application-desc   ,  webstart     jar       --> 
    <application-desc main-class="jws.HelloWorld"/>  </jnlp>

 2.게시할 SWT 프로그램의 JAR 패키지를 웹 프로젝트에 추가합니다.경로는 jnlp에 적힌 것과 일치해야 합니다. 프로젝트에 응답할 디렉터리와 그림을 추가할 그림이 있다면
 
 3.웹 프로젝트에 페이지를 만듭니다.예: index.html
<html>
    <body>
        <a href="HelloWorld.jnlp">HelloWorld</a>
    </body>
</html>

 
위 세 단계를 마치면tomcat을 시작하고 브라우저에 입력http://localhost:8080/webstart/index.html하고HelloWorld 하이퍼링크를 클릭하면JavaWebStart를 시작하여 프로그램을 실행합니다.
 
이 때 프로그램은 의외의 이상을 일으킬 수 있음을 알립니다.아마java일 거예요.lang.reflect.InvocationTargetException 예외
 
원래는 문제가 없었는데 발표할 프로그램이 순수 JAVA 프로그램이라면 위쪽대로 하면 돼.그러나 여기는 안 됩니다. 왜냐하면 SWT 프로그램이 운영체제의 창 위젯 (widget) 을 호출해야 하기 때문입니다.그래서 클라이언트의 로컬 자원에 접근해야 합니다.
다음은 앞의 코드를 수정합니다.
 
1. 먼저 jnlp 파일을 수정하고 요소 뒤에 요소 앞에 요소를 추가합니다.
 <security>
     <all-permissions/>
 </security>

 
게시할 프로그램이 로컬 자원에 접근할 수 있도록 합니다.
 
2. JavaWebStart 샌드박스의 제한으로 인해 로컬 자원에 접근하려면 발표할 JAR 패키지에 서명해야 합니다.
 
서명 목적: 애플릿이나 자바 웹 Start 프로그램이 클라이언트의 로컬 자원에 접근할 수 있도록 애플릿이나 JWS 프로그램jar 패키지에 디지털 서명을 해야 한다. 이후 클라이언트가 애플릿이나 JWS 프로그램을 열 때 이 프로그램이 현지 자원에 접근할 수 있는지 여부를 알려준다. 사용자가 프로그램을 사용하려면 OK를 선택할 수밖에 없다.이렇게 하면 당신의 프로그램은 어떤 접근 권한에 따라 클라이언트의 로컬 자원을 접근할 수 있습니다.서명 단계: 1.프로그램을jar 패키지로 만듭니다.이것은 더 이상 말하지 않겠습니다. eclipse,netbeans 등 개발 도구로 쉽게 포장할 수 있습니다.        2.keytool 명령으로 생성합니다.store 파일.임의의 폴더 아래에 키tool을 만듭니다.bat 파일, keytool-genkey-keystore xxx를 입력합니다.keystore -alias xxx -validity 3650에 저장하고 두 번 클릭하여 실행합니다.현재 디렉터리에 xxx를 생성합니다.키스토어 파일, -alias는 별명, -validity는 이 인증서의 유효 일수를 받습니다. 3650은 10년을 나타냅니다.(이 인증서로 서명하는 프로그램은 10년 내에 유효하다).        3.jarsigner 프로그램으로jar 패키지에 서명합니다.새 jarsinger.bat 파일, jarsigner -keystore xxx를 입력합니다.keystore helloworld.jar xxx 저장, 더블 클릭 실행, Hello World.jar가 서명됐어요.  
 
위의 두 단계를 수정한 후에 당신의 SWT 프로그램을 발표할 수 있습니다.현재 브라우저에서 입력http://localhost:8080/webstart/index.html하고 HelloWorld 하이퍼링크를 클릭하여 프로그램을 실행하면 JavaWebStart 프로그램 관리자가 프로그램을 신뢰하는지 알려주고 실행을 클릭하면 됩니다.
이 SWT 프로그램은 릴리즈됩니다.

좋은 웹페이지 즐겨찾기