Java Web Startを使用してJava(FX)デスクトップアプリをデプロイしました。アップデートは正常に機能しますが、ダウンロードしたJNLPを手動で実行した場合にのみ、デスクトップとメニューにインストールされたショートカットからは機能しません。
これが私のJNLPです。
<?xml version="1.0" encoding="utf-8"?>
<jnlp codebase="http://192.168.1.85/deploy/" spec="1.0" xmlns:jfx="http://javafx.com" href="Companyapp.jnlp">
<information>
<title>Companyapp</title>
<vendor>Media Citizens</vendor>
<description>Companyapp Presentation Desktop</description>
<homepage href="http://192.168.1.85/deploy/"/>
<offline-allowed/>
<shortcut online="false" install="true">
<desktop />
<menu submenu="Companyapp"/>
</shortcut>
<icon kind="shortcut" href="http://192.168.1.85/deploy/icons/32x32.gif" width="32" height="32" />
<icon kind="shortcut" href="http://192.168.1.85/deploy/icons/64x64.gif" width="64" height="64" />
<icon kind="splash" href="http://192.168.1.85/deploy/icons/splash_screen.jpg" width="1024" height="768" />
</information>
<update check="always" policy="always" />
<security>
<all-permissions/>
</security>
<resources>
<jfx:javafx-runtime version="2.2+" href="http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp"/>
</resources>
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="http://192.168.1.85/deploy/Companyapp.jar" main="true" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/async-http-client-1.7.8.jar" size="477791" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/commons-codec-1.7.jar" size="259600" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/commons-io-2.4.jar" size="185140" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/commons-lang3-3.1.jar" size="315805" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/commons-logging-1.1.jar" size="52915" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/json-simple-1.1.1.jar" size="23737" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/slf4j-api-1.7.2.jar" size="26083" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/sqlite-jdbc-3.7.15-SNAPSHOT.jar" size="3702257" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/ws-commons-util-1.0.2.jar" size="34407" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/xmlrpc-client-3.1.3.jar" size="58573" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/xmlrpc-common-3.1.3.jar" size="109131" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/zt-zip-1.5.jar" size="33059" download="eager" />
<jar href="http://192.168.1.85/deploy/libs/javaws.jar" size="893738" download="eager" />
</resources>
<jfx:javafx-desc width="0" height="0" main-class="com.mediacitizens.companyapp.presentation.desktop.Main" name="Company App" />
<application-desc main-class="com.mediacitizens.companyapp.presentation.desktop.Main" />
</jnlp>
念のため、ショートカットをインストールするプログラムの一部を次に示します。
// install shortcuts
try
{
IntegrationService is = null;
try
{
is = (IntegrationService) ServiceManager.lookup("javax.jnlp.IntegrationService");
}
catch (UnavailableServiceException use)
{
throw new ApplicationError(use.getLocalizedMessage());
}
if (!is.hasDesktopShortcut())
{
if (!is.requestShortcut(true, true, "Companyapp"))
{
throw new ApplicationError("Integration failed.");
}
}
else
{
//initialController.dialog("Shortcuts exist", "Go away!", null);
}
}
catch (ApplicationError e)
{
initialController.dialog("Failed to integrate a shortcut on your computer.\nCause: " + e.getLocalizedMessage(), "I understand", null);
}
アップデート1
削除<offline-allowed />
してショートカットから更新しましたが、アプリケーションをオフラインで起動できません。どうやら私はできるはずですか?それは私にこのエラーを与えます:
公平を期すために、私は起動時にサーバーに接続しようとしますが、それはこのエラーの原因ではありません。2秒のタイムアウトがあり、次のようになります。
try
{
isOffline = !(InetAddress.getByName(Config.domain + "." + Config.serverDomain).isReachable(2000));
}
catch (IOException e)
{
e.printStackTrace();
}
とにかく、私のコードはエラーで参照されていないので、持っていない場合<offline-allowed />
はアプリをオフラインで実行できませんか?これは本当ですか?もしそうなら、これはJWSでの展開にとって大きな問題です、私はおそらくそれを完全に捨てるでしょう...
アップデート2
私はこれにぶつかっているかもしれないと思います:http: //bugs.sun.com/bugdatabase/view_bug.do? bug_id = 7121086誰かが回避策を知っていますか?
バグではそれは言う
拡張機能として使用されるすべてのjnlpのrifを取得します。すべてを1つに混ぜることを意味します。動作するこの状態で
では、JavaFXをjarとしてJNLPにミックスする必要がありますか?