必须从JNLP文件的resources部分中指定的JAR文件中检索所有应用程序资源,或者使用对Web服务器的HTTP请求显式检索所有应用程序资源.
建议在JAR文件中存储资源,因为它们将由Java Web Start缓存在本地计算机上.
现在,我有一些资源,我想在我的应用程序启动后动态加载(例如OSGi包).我可以使用普通HTTP来做到这一点,但我想利用Web Start对本地缓存和版本化/体系结构特定资源的支持.
有没有办法使用Web Start基础架构从原始代码库(在应用程序的jnlp文件中指定)下载其他jar文件?
或者:是否已经建立了集成OSGi和Web Start的方法,这将减轻我从Web Start服务器安装捆绑包的任务?
我正在尝试使用Java Webstart部署一个通过TibrvJ库使用Tibrv 的本机实现的应用程序.
我已经将所有Windows dll从内部打包c:\tibco\tibrv\bin到一个Jar文件中,并将它们添加到JNLP文件中的nativelib元素中.
我希望webstart 从文件中获取dlltibco-7.5.1-nativelibs.jar文件并允许它们通过System.loadLibrary调用 来加载Tibrv.open().但是它似乎不想正常工作.
我的JNLP文件如下所示:
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Descriptor 6.0//EN" "http://java.sun.com/dtd/JNLP-6.0.dtd">
<jnlp spec="6.0+"
codebase="http://somewhere:8080/my-gui/application"
href="launch.jnlp">
<information>
<title>My GUI</title>
<vendor>Technology</vendor>
<description>Dashboard</description>
<description kind="short">Dashboard</description>
<icon href="icon/Stocks-128x128.png" />
<offline-allowed />
<shortcut online="true">
<desktop />
<menu submenu="Dashboard" />
</shortcut>
</information>
<security>
<all-permissions />
</security>
<update check="always" policy="prompt-update" />
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" …Run Code Online (Sandbox Code Playgroud) 我有一个通过Java Webstart启动的Java应用程序。有时,在重新部署应用程序之后,启动该应用程序会导致每次启动都将其下载两次。我还没有深入了解这个问题,但我认为它可能与我们的鱿鱼代理有关,后者似乎与Java交互不良。为了进一步研究这个问题,我想了解一下javaws在做什么。javaws是否有可用的此类选项?
只是一个小小的更新,如果将Java配置为显示控制台,则在将焦点放在控制台上时单击“ 5”会将日志记录级别设置为5,这是最详细的日志记录级别。这可能很有用,但不能解决应用程序无法做到这一点的情况。
我正在编写一个java webstart应用程序来从网站部署,以便用户可以单击并运行我的软件.我需要一种独特的机器识别,以避免滥用文件的访问.我想使用客户端的MAC地址作为唯一密钥,以便服务器可以确保没有客户端下载太多.
当然,用户可能有多个网卡,那么我的Java应用程序如何确定用户用来访问我的网站的网卡的MAC地址?
我有一个Java webstart应用程序,完全签名,现在已经部署了一年多.由于某种原因,我们从未能够使用Safari.实际上,我无法让任何JAWS应用程序与Safari一起使用.
互联网搜索参差不齐,我似乎无法确定为什么Safari有网络启动问题.
编辑
这是Safari中Java控制台的java堆栈跟踪.请理解Java Web Start应用程序在Firefox,IE,Chrome等中没有任何问题,可以正常工作.
Java Plug-in 1.6.0_29 Using JRE version 1.6.0_29-b11 Java HotSpot(TM) Client VM User home directory = C:\Users\strings ---------------------------------------------------- c: clear console window f: finalize objects on finalization queue g: garbage collect h: display this help message l: dump classloader list m: print memory usage o: trigger logging p: reload proxy configuration q: hide console r: reload policy configuration s: dump system and deployment properties t: dump thread list v: dump thread stack …
我在这里面临一个问题.我想使用特殊版本来运行我们的java webstart应用程序,但只需要一个jnlp.("经过测试,... blabla我们不能使用新版本... blabla"随机风袋)
所以我试着像这样配置我们的JNLP:
<resources>
<j2se version="1.6.0_29" href="http://java.oracle.com/products/autodl/j2se"/>
...
</resources>
Run Code Online (Sandbox Code Playgroud)
当我开始这个jnlp时,即使安装了正确的Java,我也会得到以下错误:
错误:应用程序已请求当前未在本地安装的JRE版本(版本1.6.0_29).Java Web Start无法自动下载并安装所请求的版本.必须手动安装此JRE.
更新
在JNLP文件语法中,允许使用特定的Java版本,如1.6.0_29.我甚至用1.6.0_29-b11尝试过它- 仍然是同样的错误.
也可以指定精确的产品版本(实施版本).通过包含href属性.例如,Sun Microsystems,Inc.的1.3.1_07,1.4.2或1.5.0-beta2.例如,
<j2se version ="1.4.2"href ="http://java.sun.com/products/autodl/j2se"/>
要么
<j2se version ="1.4.2_04"href ="http://java.sun.com/products/autodl/j2se"/>
编辑
给出的答案没有帮助,也没有正确的答案.
如何在签名时将其他参数添加到jar的清单文件中?我有一个使用一些外部库的javaws应用程序.从java7u25开始,清单(权限和代码库)中需要其他参数.如何在签名时设置这些(如果可能的话,使用maven).我可以在构建时为我生成的工件设置它,但对于我从外部存储库获取的工具,如何在签名时插入它们?
java 7u45的乐趣不断给予.这次是webstart中的僵局.这种情况非常一致(每次)都会启动大型应用程序(约100个罐子).
有没有其他人遇到这个或知道任何变通办法?除了恢复到1.7.0_40?
谢谢,
Found one Java-level deadlock:
=============================
"Java Web Start Main Thread":
waiting to lock monitor 0x066368bc (object 0x29e65428, a java.lang.Class),
which is held by "Finalizer"
"Finalizer":
waiting to lock monitor 0x00dbc954 (object 0x2a1b52b0, a com.sun.deploy.cache.CacheEntry),
which is held by "Java Web Start Main Thread"
Java stack information for the threads listed above:
===================================================
"Java Web Start Main Thread":
at com.sun.deploy.cache.MemoryCache.getLoadedResource(Unknown Source)
- waiting to lock <0x29e65428> (a java.lang.Class for com.sun.deploy.cache.MemoryCache)
at com.sun.deploy.cache.CachedJarFile.getCacheEntry(Unknown Source)
- locked <0x24810058> (a …Run Code Online (Sandbox Code Playgroud) 我有一个使用Internet Explorer打开*.jnlp扩展的问题.该扩展程序在Chrome和Firefox中正常打开,让我相信它是IE的问题,可能还有 Web服务器/ JNLP配置.具体来说,Internet Explorer将*.jnlp文件作为*.xml脚本打开,而不是下载文件或使用java web start打开它.
例:
<?xml version="1.0" encoding="utf-8" ?>
- <!--
JNLP File for Downtime Registration Application
-->
- <jnlp spec="1.7+" codebase="http://foo:8080/bar" href="bar.jnlp">
- <information>
<title>FOO</title>
<vendor>FOO Inc.</vendor>
<description>FOO BAR System</description>
- <shortcut online="false">
<desktop />
<menu submenu="FOO" />
</shortcut>
</information>
- <security>
<all-permissions />
</security>
- <resources>
<j2se version="1.7+" java-vm-args="-client" />
...
</resources>
<application-desc main-class="FooBarMainApp" />
</jnlp>
Run Code Online (Sandbox Code Playgroud)
我尝试了以下"修复"/解决方法无济于事:
更新: 我能够通过下面发布的解决方法解决此问题.但是,如果有人有建议,我正在寻找更永久的解决方案.具体来说,我正在寻找一种方法来解决业务/服务器端的问题,如果可能的话.如果用户不需要更改他们的任何设置(其他然后从IE切换到不同的浏览器)将是很好的.
web.xml中的MIME映射:
<mime-mapping>
<extension>jnlp</extension>
<mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>
Run Code Online (Sandbox Code Playgroud) 我买了一个COMODO代码签名证书,用它来签署我的java webstart应用程序.
主要问题:Java 8甚至支持COMODO代码签名证书吗?
更多信息:
在除我自己以外的所有机器上,java会阻止应用程序,说它使用自签名证书.
我甚至不明白为什么它在我的机器上运行.我查看了java控制面板(1.8.0_45-b15)中可信认证根的列表,但我找不到那里的"COMODO RSA认证中心".
我确实在"受信任的根证书颁发机构"下的Windows MMC证书管理单元中看到该证书.但至少在其他3台机器上它并不存在.

java-web-start ×10
java ×9
jnlp ×4
code-signing ×1
jarsigner ×1
mac-address ×1
manifest ×1
osgi ×1
parameters ×1
safari ×1
tibco ×1
web ×1