LoginSignup
3
3

More than 5 years have passed since last update.

期限が切れて起動できなくなったjnlpをJava Web Startを使わずに起動する

Last updated at Posted at 2018-03-27

どんどんJavaのセキュリティが厳しくなってますね。
Ora*leからJavaは辞めようって言われてるような気がしてきました。

証明書の期限が切れそうになっていたため電子証明書を発行してもらったところ、WinPCでしか認識できないUSBが送られてきました。
でも手元にWinPCはない。
テスト環境はあるけど、署名ができないからjnlpから起動できない。

ということで、Java Web Startを使わずにアプリを立ち上げようと思います。
注意:あくまでテスト用です。推奨はしません。

結論

こんな感じのjnlpファイルがあるとします。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp codebase="http://127.0.0.1/application/">
  <information>
    <title>test_project</title>
    <vendor>Kai Shoya</vendor>
    <description/>
  </information>
  <resources>
    <jar href="main.jar"/>
    <jar href="library.jar"/>
    <j2se version="1.7+" initial-heap-size="512m" max-heap-size="1024m"/>
  </resources>
  <application-desc main-class="com.example.test.Main"/>
  <security>
    <all-permissions/>
  </security>
</jnlp>

それをこうします。(語彙力。。。

#!/bin/bash
URL="http://127.0.0.1/application"
SCRIPT_PATH="$(cd $(dirname $0); pwd)"
LIB_PATH="$SCRIPT_PATH/lib"

mkdir -p $LIB_PATH
cd $LIB_PATH

curl -O "$URL/main.jar"
curl -O "$URL/library.jar"

java -cp "$LIB_PATH/*" com.example.test.Main

ポイントは3つです。

  1. <jnlp codebase="http:/127.0.0.1/application"><jar href="main.jar"/>を組み合わせてcurlで取ってくる

  2. java -cpでダウンロードしたファイルのパスを通す
    -cpと-jarを組み合わせるとパスがうまく通りません

  3. <application-desc main-class="com.example.test.Main"/>がメインクラス名

jnlpをこう書き換えてもセキュリティエラーになるのでお気をつけ下さい。
これ解決するまでに何時間もかかってしまった。。。

<jnlp codebase="./lib/">
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3