どんどん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つです。
-
<jnlp codebase="http:/127.0.0.1/application">
と<jar href="main.jar"/>
を組み合わせてcurlで取ってくる -
java -cp
でダウンロードしたファイルのパスを通す
-cpと-jarを組み合わせるとパスがうまく通りません -
<application-desc main-class="com.example.test.Main"/>
がメインクラス名
jnlpをこう書き換えてもセキュリティエラーになるのでお気をつけ下さい。
これ解決するまでに何時間もかかってしまった。。。
<jnlp codebase="./lib/">