有以下示例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>
(请忽略格式或其他不一致之处 - 唯一重要的部分是 argument 部分)
在 argument 标记中包含变量 db_port ,是否有办法在使用 javaws 执行jnlp时将值传递给此变量?
例如: javaws /path/to/sample.jnlp 31022
EDIT:
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来启动应用程序或者可能创建一个“父”,以便能够将参数传递给它 .
1 回答
关于此主题的文档似乎是intentionally lacking,但documentation suggests将命令行参数传递给
javaws
可执行文件的首选方法是通过‑userConfig
标志 .例如
文档没有提供此示例 . 我甚至搜索了GitHub的
javaws userConfig
并且只获得了handful of results,所以这似乎是一个很少使用的功能 .由于您的问题专门询问另一个变量中包含的
<port>
变量,因此不是直接支持的 . 相反,您需要找到一种方法来使用通配符或使用附加变量并在主类内部进行搜索/替换来对其进行参数化,假设您可以访问源代码 . 如果你不是signed file .