0

具有以下示例 jnlp:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="$$codebase" href="$$name">
    <information>
        <title>Some Example</title>
        <vendor>Some Sample Vendor</vendor>
        <homepage href="http://www.somesamplevendorhomepage.com"/>
        <description>Some Sample Description</description>
        <icon kind="splash" href="link_to_some_splash.jpg"/>
        <offline-allowed/>
    </information>
    <security>
        <all-permissions/>
    </security>
    <update check="always" policy="always"/> 
    <application-desc main-class="com.some.sample.Main">
        <argument>--URL=SAMPLE_DB_NAME=http://localhost:<db_port>/webapplication/creds/auth</argument>
        <argument>--UserTimeout=350</argument> 
    </application-desc>
    <resources>
        <j2se version="1.7+" />
        <jar href="com.some.sample_1.0.0.jar"/>
        .
        .
        .
    </resources>
</jnlp>

(请忽略格式或其他不一致 - 唯一重要的部分是参数部分)

参数标签中有变量db_port ,有没有办法在使用javaws执行 jnlp 时将值传递给这个变量?

例如:javaws /path/to/sample.jnlp 31022


编辑:

JNLP 将 JAR 下载到位于(在 Windows 上)AppData\LocalLow\Sun\Java\Deployment\cache 下的缓存文件夹中。有没有办法使用下载的 JAR(我的应用程序有多个 JAR 文件)来执行直接向下载的 JAR 提供参数的应用程序?

例如:

jar -jar app.jar --URL=SAMPLE_DB_NAME=http://localhost:<db_port>/webapplication/creds/auth

PS:我了解存储在缓存文件夹中的文件具有计算生成的名称,并且它们没有 .jar 扩展名。但是,从 Java 控制面板 GUI 或带有“javaws -viewer”的 CMD/PS,我能够确定用作 jnlp 的文件并启动它。我想知道是否有一种方法可以使用一些 JAR 来启动应用程序,或者创建一个“父”应用程序以便能够向它传递参数。

4

1 回答 1

0

该文档似乎故意缺少该主题,但该文档建议将命令行参数传递给javaws可执行文件的首选方法是通过‑userConfig标志。

例如

javaws /path/to/sample.jnlp -userConfig port 31022

该文档没有为此提供示例。我什至在 GitHub 上搜索javaws userConfig并只得到了一些结果,所以这似乎是一个很少使用的功能。

由于您的问题专门询问<port>另一个变量中包含的变量,因此不直接支持。相反,假设您可以访问源代码,您将需要找到一种方法来<port>使用附加变量和在主类中进行一些搜索/替换来使用通配符或参数化。如果您无法访问源代码,您将无法手动编写 JNLP,如果它是签名文件,则可能需要额外的工作。

于 2018-02-06T19:10:36.530 回答