我的应用程序的设置是这样的:
我有一个托管在服务器上的网页,它有一个链接,可以动态创建一个 JNLP 文件,该文件通过 http 呈现给用户。然后使用 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();
}