我知道如何使用Eclipse调试远程Java VM,但是如何使用Java Web Start程序来完成它.我遇到的问题只出现在Java Web Start中.它必须与安全相关.
我需要一个适用于当前Java VM(如1.6.0_12)的解决方案.
我在网上看到Java版本7u51(将于2014年1月发布)将不再接受我自签名的Java Webstart应用程序.
真的吗?
如果是真的,我是否有机会为我的JNLP应用程序构建一个变通方法,以便我能够在2014年1月之后启动该应用程序?
我已经看到在7u40中删除了因使用自签名证书而禁止安全警告的选项.
我需要在Linux,Solaris和Windows上的JRE 1.6中对os.arch属性的所有可能值进行最新编译.如果可能,请引用您的发现来源.我需要这个值来选择我的JNLP文件中的资源.基本上我需要根据JRE是32位还是64位来分配不同的JVM内存.等待你的答复.谢谢
操作系统:Windows 7 64位
Java:jdk1.7.0_51
我有一个jnlp文件.当我双击它时,发生异常如下:
Application Error: Unable to launch the application
Exception: java.lang.SecurityException: Missing required Permissions manifest attribute in main jar
Run Code Online (Sandbox Code Playgroud) 我最近使用了Java Web Start应用程序.我使用我正在查看的页面中的嵌入式jnlp链接从我的Web浏览器启动它.该应用程序已下载,启动并正常工作.它可以访问我的本地文件系统,并在重新启动它之间记住我的偏好.
我想知道的是,为什么Java Web Start应用程序不是Web上复杂应用程序的更流行的交付格式?为什么开发人员经常花费大量时间和精力在html/javascript中复制桌面功能,而使用Java和Java Web Start可以更轻松地提供桌面应用程序的强大功能?
我知道在某些企业环境中,例如银行业,它们是向客户提供复杂交易应用程序的相对流行的方式,但为什么它们不能在整个网络上普及?
(为了便于讨论,让我们假设一个世界:下载源是"可信的"和应用程序是"签名"(即没有安全问题),下载速度快(加载时间快)开发人员知道Java(数量上他们知道html/js/php)).
随着最新的Java更新,很多人都与他们的Java Web Start的麻烦应用程式缺乏Codebase,Permissions和Application-name清单属性.虽然有资源可以帮助你实现这一目标,但我找不到任何关于这个问题的全面答案,我觉得Q-and-A会很好.所以,这是问题:
我的Java Web Start应用程序在控制台中显示以下警告:
Missing Permissions manifest attribute for: http://www.codebase.com/myApp/dist/myApp.jar
Missing Codebase manifest attribute for: http://www.codebase.com/myApp/dist/myApp.jar
Missing Application-Name manifest attribute for: http://www.codebase.com/myApp/dist/myApp.jar
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
我的应用程序的预加载器处理特定于应用程序的初始化.现在我正在尝试扩展它,以便预加载器还显示下载的应用程序JAR的进度.
为什么预加载器在第2阶段没有加载,因为这应该处理PreloaderFx::handleProgressNotification();跟踪JAR的下载我想?
2016年3月14日更新:使用DownloadServiceListener解决这个问题的方法是什么?如何将其连接到JavaFX阶段?
根据Oracle的说法,启动应用程序有4个阶段:
阶段2:加载和准备:从网络或磁盘缓存加载所需的资源,并进行验证过程.所有执行模式都会看到默认或自定义预加载器.在此阶段,应显示我的自定义预加载器.
阶段3:特定于应用程序的初始化:应用程序已启动,但可能需要在其完全正常运行之前加载其他资源或执行其他冗长的准备工作.目前,我的自定义预加载器显示如下:
我注意到的第一件事是,在阶段2中,未显示处理应用程序JAR下载的默认JavaFX预加载器.因此,用户感觉程序没有提前启动或终止,使他们多次打开JNLP文件.下载JAR后,我们进入阶段3并显示预加载器.
但是,我希望我的自定义预加载器能够处理ProgressBar中的下载进度(阶段2).我使一切尽可能简单,以便在应用程序启动期间跟踪发生的事件.这是基于Jewelsea和Oracle示例的示例:
预载:
public class PreloaderFX extends Preloader {
Stage stage;
//boolean noLoadingProgress = true;
public static final String APPLICATION_ICON
= "http://cdn1.iconfinder.com/data/icons/Copenhagen/PNG/32/people.png";
public static final String SPLASH_IMAGE
= "http://fxexperience.com/wp-content/uploads/2010/06/logo.png";
private Pane splashLayout;
private ProgressBar loadProgress;
private Label progressText;
private static final int SPLASH_WIDTH = 676;
private static final …Run Code Online (Sandbox Code Playgroud) 我需要阻止用户多次启动我的Java应用程序(WebStart Swing应用程序).因此,如果应用程序已在运行,则无法再次启动它或显示警告/再次关闭.
有没有一些方便的方法来实现这一目标?我想过阻塞一个端口或写一个文件.但希望您可以访问某些系统属性或JVM?
顺便说一句.目标平台是带有Java 1.5的Windows XP
我有以下JNLP文件:
<jnlp spec="1.0+" codebase="http://****:****" href="tcm2012.jnlp">
<information>
<title>TCM 2012</title>
<vendor>Drift og Performance, *** Servicecenter</vendor>
<homepage href="http://******"/>
<description/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+"/>
<jar href="tcm2012.jar"/>
</resources>
<application-desc main-class="com.****.kundeservice.TCMApplication"/>
</jnlp>
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试从网上运行时,我收到以下错误:
Found unsigned entry in resource
Run Code Online (Sandbox Code Playgroud)
随着以下的曝光
com.sun.deploy.net.JARSigningException: Found unsigned entry in resource: http://*****:****/tcm2012.jar
at com.sun.javaws.security.SigningInfo.getCommonCodeSignersForJar(Unknown Source)
at com.sun.javaws.security.SigningInfo.check(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
at com.sun.javaws.Launcher.prepareResources(Unknown Source)
at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main.access$000(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 我们从附加的JNLP运行应用程序.在Java控制台上,我们使用D输出系统属性.我们的JNLP文件中的属性不再设置.这是我们遇到此类问题的第一个Java版本.一切都工作正常,包括7 Update 40.
我们已经签署了所有的罐子,但是它们的清单中没有安全属性.
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://10.0.10.230/webstart/app" href="desktop.jnlp">
<information>
<title>MyApp Desktop</title>
<vendor>MyApp GmbH</vendor>
<homepage href="http://www.myres-edv.de"/>
<description>MyApp Desktop</description>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+" initial-heap-size="512M" max-heap-size="1024M" javaws-vm-args="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8200"/>
<property name="org.omg.CORBA.ORBInitialHost" value="10.0.10.230"/>
<property name="org.omg.CORBA.ORBServerHost" value="10.0.10.230" />
<property name="sun.net.spi.nameservice.provider.1" value="dns,sun" />
<property name="MyApp.baktswritedos" value="true"/>
<property name="MyApp.nocomm" value="true"/>
<property name="MyApp.la.erfassungdos" value="true"/>
<property name="com.sun.corba.ee.transport.ORBTCPConnectTimeouts" value="500:30000:40:30000" />
<property name="deployment.trace.level" value="all" />
<jar href="myresjar/ejb/myres/myres_ejb_client.jar" main="true" download="eager"/>
<jar href="myresjar/ejb/myres/myres_ejb.jar" download="eager"/>
<extension name="jars" href="commonejbjars.jnlp"/>
<extension name="jars" href="jr.jnlp"/>
<extension name="jars" href="commonjars.jnlp"/>
<extension name="jars" href="commonjh.jnlp"/> …Run Code Online (Sandbox Code Playgroud)