私のアプリケーションのセットアップは次のようになります。
サーバーでホストされている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();
}