我正试图通过网络启动启动一个Java应用程序,我收到以下错误,我似乎无法弄清楚.任何提示,技巧或窍门来解决这个问题将不胜感激.
JNLPException[category: Launch File Error : Exception: null : LaunchDesc:
<jnlp spec="1.0+" codebase="http://javadl.sun.com/webapps/jawsautodl/AutoDL/j2se/">
<information>
<title>J2RE 1.5.0_22 Installer</title>
<vendor>Sun Microsystems, Inc.</vendor>
<homepage href="null"/>
</information>
<security>
<all-permissions/>
</security>
<update check="timeout" policy="always"/>
<resources>
<java href="http://java.sun.com/products/autodl/j2se" version="1.3+"/>
<jar href="http://javadl.sun.com/webapps/jawsautodl/AutoDL/j2se/javaws-j2re-inst.jar" download="eager" main="false"/>
<property name="installerLocation" value="jre-1_5_0_22-linux-i586.bin"/>
<property name="installerSize" value="17283082"/>
<property name="javaVersion" value="1.5.0_22"/>
<property name="platformVersion" value="1.5"/>
<property name="licenseSize" value="13238"/>
<property name="waitString.0" value="[yes or no]"/>
<property name="responseString.0" value="yes"/>
<property name="osplatform" value="linux-i586"/>
</resources>
<installer-desc main-class="com.sun.webstart.installers.Main"/>
</jnlp> ]
at com.sun.javaws.JnlpxArgs.executeInstallers(JnlpxArgs.java:500)
at com.sun.javaws.Launcher.prepareResources(Launcher.java:993)
at com.sun.javaws.Launcher.prepareAllResources(Launcher.java:621)
at com.sun.javaws.Launcher.prepareToLaunch(Launcher.java:327)
at com.sun.javaws.Launcher.prepareToLaunch(Launcher.java:199)
at com.sun.javaws.Launcher.launch(Launcher.java:116) …Run Code Online (Sandbox Code Playgroud) 指定代码库是合法的:
<jnlp spec="6.0+"
codebase="file:/c:/MyApp/"
href="myapp.jnlp">
Run Code Online (Sandbox Code Playgroud)
使用JWS导入时,它会创建桌面快捷方式,并且应用程序正在运行.
但是,有一点与远程代码库有很大不同.当我在应用程序运行时更新这些文件时,它基本上会停止工作ClassNotFoundExceptions.似乎JWS没有复制jar,或者在更新时立即复制它们,以某种方式覆盖正在运行的进程使用的jar.
我如何让它像文件是远程的一样工作?也就是说,将文件复制到缓存并仅在启动时检查更新.
编辑:我还没有办法做到这一点,并决定采用自制的替代品.在此过程中,我发现了一些错误,并在http://squirrel.pl/blog/2011/11/24/java-web-start-bugs-offline-edition/上总结了一些观察结果.将它发布在这里,以防它可能对某人有用.
每次单击Java Webstart按钮时,Firefox都会下载JNLP文件并将其放入"我的下载"文件夹中.我的JWS应用程序中有超过500个JNLP文件名为name-123.jnlp,依此类推.Internet Explorer没有这样做,有没有办法阻止Firefox这样做?我是应用程序的开发人员,因此也可以进行服务器端更改.
附加信息:我在服务器上正确设置了mime类型.
在我的公司,我们下载并启动了一个与JRE 1.6.0_20绑定的JNLP应用程序.我们使用系统缓存功能下载JAR.
当我们在PC上安装JRE 1.7时,WebStart无法启动.当我们启用日志时,我们会看到以下异常:
java.lang.ExceptionInInitializerError
at com.sun.deploy.net.protocol.https.Handler.openConnection(Unknown Source)
at java.net.URL.openConnection(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.createUrlConnection(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source)
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCachedFile(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: sun.security.ssl.X509TrustManagerImpl cannot be ast to com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager
at com.sun.deploy.security.X509ExtendedDeployTrustManager.<init>(Unknown Source)
at com.sun.deploy.net.protocol.https.Handler$Initializer$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.net.protocol.https.Handler$Initializer.<clinit>(Unknown Source)
... 16 more
Run Code Online (Sandbox Code Playgroud)
有一个已知的解决方法吗?
我需要为mac os-x移植一个java桌面应用程序.该应用程序将通过JNLP发布.是否在MAC-OSX上预安装了Java运行时环境?
我是JavaFx的新手.我发现每个教程都使用NetBeans IDE for JavaFx.但我正在使用Eclipse.我在Eclipse中学习并开发了许多独立的javafx应用程序,但现在我想开发在浏览器上运行的JavaFx应用程序(与applet相同).我搜索过但发现所有材料都只使用NetBeans IDE而不是eclipse.当我们选择Project Properties中的Run in Browser选项时,NetBeans会自行生成jnlp,jar和html文件.对于Eclipse IDE,我该怎么办?我在eclipse中为Javafx使用e(fx)clipse插件.请尽快提供一些资料
从命令行更新java Web Start应用程序时是否可以强制缓存清除?
我有一个通过Java Webstart启动的Java应用程序。有时,在重新部署应用程序之后,启动该应用程序会导致每次启动都将其下载两次。我还没有深入了解这个问题,但我认为它可能与我们的鱿鱼代理有关,后者似乎与Java交互不良。为了进一步研究这个问题,我想了解一下javaws在做什么。javaws是否有可用的此类选项?
只是一个小小的更新,如果将Java配置为显示控制台,则在将焦点放在控制台上时单击“ 5”会将日志记录级别设置为5,这是最详细的日志记录级别。这可能很有用,但不能解决应用程序无法做到这一点的情况。
使用maven-webstart-plugin构建jnlp时,我发现运行时依赖项未包含在jnlp中.
我正在使用这样的模板:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="$jnlpspec" codebase="${url}/${appName}" href="${outputFile}">
<information>
<title>${appName}</title>
<vendor>$project.Organization.Name</vendor>
<homepage href="${url}/${appName}"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="$j2seVersion"/>
$dependencies
</resources>
<application-desc main-class="${main}" />
</jnlp>
Run Code Online (Sandbox Code Playgroud)
如何包含运行时依赖项?好吧,我可以单独包括它们:
<plugin>
<groupId>org.codehaus.mojo.webstart</groupId>
<artifactId>webstart-maven-plugin</artifactId>
<configuration>
<dependencies>
<includes>
<include>groupId:artifactId</include>
...
</includes>
</dependencies>
...
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
...但理想情况下,每次我向项目添加运行时依赖项时,我都不想记得要更改它.
有没有办法指示插件包含所有运行时依赖项?
这是我关于Java的第一个问题,所以请耐心等待.
我从这段代码构建了一个名为HelloWorldApp.class的愚蠢的简单applet类:
import java.applet.Applet;
class HelloWorldApp extends Applet
{
static final long serialVersionUID = 6636669702238171717L;
public String test()
{
return "Hello World!"; // Display the string.
}
}
Run Code Online (Sandbox Code Playgroud)
然后我从所述类文件中构建了一个jar文件.之后,我做了一个愚蠢的简单JNLP文件:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="/Content/applets" href="/Content/applets/datadelivery.jnlp">
<information>
<title>Hello World</title>
<vendor>Me</vendor>
</information>
<resources>
<!-- Application Resources -->
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="HelloWorldApp.jar" main="true" />
</resources>
<applet-desc
name="Test Applet"
main-class="HelloWorldApp"
width="300"
height="50">
</applet-desc>
<update check="background"/>
</jnlp>
Run Code Online (Sandbox Code Playgroud)
我扔了目录/ Content/applets中的所有三个项目.最后,为了将它们组合在一起,我将其放在HTML文档的正文中:
<script type="text/javascript">
var attributes = {
id:'deliveryApplet',
code: 'HelloWorldApp',
// note: I tried including …Run Code Online (Sandbox Code Playgroud)