0

私のアプリケーションのセットアップは次のようになります。

サーバーでホストされているWebページがあり、httpを介してユーザーにレンダリングされるJNLPファイルを動的に作成するためのリンクがあります。次に、JNLP を使用して JavaFX アプリケーションを起動します。

プロパティを各ユーザーのマシンにローカルに保存するにgetCodeBase()は、API からメソッドにアクセスする必要があります。BasicService作成された私の JNLP は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="6.0+" xmlns:jfx="http://javafx.com" codebase="http://myserver.com/downloads">
  <information>
    <title>My App</title>
    <vendor>My Vendor</vendor>
    <description>Application to do something</description>
    <homepage href="http://myserver.com/myapp" />
    <offline-allowed/>
    <shortcut online="true">
      <desktop/>
      <menu submenu="My App"/>
    </shortcut>
  </information>

  <security>
    <all-permissions/>
  </security>
<update check="always"/>
  <resources>
    <j2se version="1.7.0_25+" java-vm-args="-Xmx1024m -Djava.net.preferIPv4Stack=true"    href="http://java.sun.com/products/autodl/j2se"/>
    <property name="myID" value="1" /> 
  </resources>

  <resources>
    <jar href="my-app-0.0.1.jar" download="eager" />
  </resources>

  <application-desc main-class="com.myApp.MyApp"/>

</jnlp>

このgetCodeBase()メソッドは/downloadsではなく を返しますhttp://myserver.com/downloads。誰かがエラーを修正するための指針を持っている場合、それらは役に立ちます。

コードベースにアクセスするために使用しているコードは次のとおりです。

 try
    {
        persistenceService = (PersistenceService) ServiceManager
            .lookup("javax.jnlp.PersistenceService");
        basicService = (BasicService) ServiceManager.lookup("javax.jnlp.BasicService");
    }
    catch (UnavailableServiceException e)
    {
        persistenceService = null;
        basicService = null;
    }

    if (persistenceService != null
        && basicService != null)
    {

        try
        {
            URL codebase = basicService.getCodeBase();

            System.out.println("code base:" + codebase.getFile() + " path is : " + codebase.getPath());

        catch (Exception e)
        {
            e.printStackTrace();
        }
4

0 に答える 0