拥有以下示例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下载到AppData \ LocalLow \ Sun \ Java \ Deployment \ cache下的(位于Windows上)缓存文件夹中。 有没有办法使用下载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来启动应用程序,或者可能创建一个“父”,以便能够将参数传递给它。
答案 0 :(得分:0)
关于此主题的文档似乎是intentionally lacking,但documentation suggests将命令行参数传递给javaws
可执行文件的首选方法是‑userConfig
标记。< / p>
e.g。
javaws /path/to/sample.jnlp -userConfig port 31022
文档未提供此示例。我甚至在GitHub上搜索了javaws userConfig
并且只获得了handful of results,所以这似乎是一个很少使用的功能。
由于您的问题专门询问了另一个变量中包含的<port>
变量,因此不是直接支持的。相反,您需要找到一种方法来使用额外的变量和一些搜索/替换主要类的<port>
通配符或参数化,假设您可以访问源。如果您无法访问源代码,那么您将无法手动编写JNLP,如果它是signed file,则可能需要额外的工作。