You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JNLP参数中使用变量、传值及复用缓存JAR文件

关于javaws传递参数与使用缓存JAR的问题

咱拆解成两个问题来逐个解答:

1. 能否通过javaws命令行给JNLP里的db_port变量传值?

答案是可以实现,但要注意方式——javaws本身不会自动替换JNLP文件<argument>标签里的变量文本,但有两种可行思路:

  • 让应用直接读取命令行参数:当你执行javaws /path/to/sample.jnlp 31022时,31022会作为额外参数传递给Java应用main方法的args数组。如果你的JNLP里的<application-desc>已定义<argument>db_port</argument>,那args数组会是["db_port", "31022"];如果没定义任何<argument>,args[0]就是31022。你只需要在应用代码里读取对应的数组元素,把它作为db_port的值使用即可。
  • 预处理JNLP文件:如果你希望JNLP里的<argument>直接是具体端口值,可以手动或用脚本把JNLP里的<argument>db_port</argument>替换成<argument>31022</argument>,再执行javaws命令。这种方式适合需要固定参数的场景。

2. 能否使用缓存目录里的已下载JAR包?

完全可以!Windows下AppData\LocalLow\Sun\Java\Deployment\cache里的JAR就是javaws为你的应用下载的依赖包,你可以直接利用它们:

  • 定位对应JAR:缓存目录按版本、哈希值等命名,你需要找到属于你的应用的所有JAR文件(可通过文件名、修改时间或JNLP里的JAR名称匹配)。
  • 直接运行应用:把这些JAR收集起来,用标准java命令运行,比如:
    java -cp "cache-jar1.jar;cache-jar2.jar;..." com.yourapp.Main 31022
    
    这里需要你知道应用的主类全名(可从JNLP的<application-desc main-class="xxx">里找到),且要确保所有依赖JAR都包含在类路径中。
  • 注意事项:缓存里的JAR可能会被javaws自动清理(比如缓存过期、手动清理操作),如果要长期使用,建议把这些JAR复制到自己的固定目录,避免依赖不稳定的缓存路径;另外,如果应用依赖native库或其他资源,也要从缓存里找到对应文件并配置好运行环境。

内容的提问来源于stack exchange,提问作者thathashd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:17:27