0

我的应用程序的设置是这样的:

我有一个托管在服务器上的网页,它有一个链接,可以动态创建一个 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();
        }
4

0 回答 0