我知道java webstart正在一个安全的沙箱下运行.是否可以在jar中包含.dll/.exe(或让webstart将其下载到本地计算机)然后执行它(使用Runtime.exec或进程等)
请指教.欢迎任何建议/评论!
我正在使用Netbeans IDE开发一个Java Web Start应用程序,该应用程序将从Web启动,然后使用EclipseLink JPA访问远程MySQL数据库.我正在使用Swing应用程序框架来管理我的应用程序的生命周期.
当我从Netbeans启动应用程序时,我的应用程序加载大约需要7秒钟,但是当我使用Netbeans IDE创建Web Start分发包(包含JAR和JNLP文件)时,启动大约需要60秒.此外,每次启动应用程序时,"验证应用程序"/"下载应用程序"进度条窗口似乎都会运行,即使已经缓存了它的副本.
从用户的角度来看,首先看到我的启动画面1到2秒,然后"验证应用程序"/"下载应用程序"进度条窗口持续5到20秒,然后在应用程序启动前40秒内没有任何内容.
编写应用程序代码,以便它应该在JPA开始加载持久性单元之前显示自己(所以我怀疑这是问题),但我想我会提到它以防万一.
更新:方法createEntityManagerFactory使用Web Start缓慢
进一步研究后,我发现当我从Netbeans运行应用程序或者当我远程登录到我的服务器时,方法createEntityManagerFactory--这是EclipseLink连接到MySQL所必需的 - 大约需要5秒钟才能执行在那里启动JNLP,但是当我通过网络运行应用程序时,同一行需要35秒(大大延迟启动).有趣的是,随着我的互联网连接速度变差,这一次变得更糟.下面是我正在使用的JNLP文件的副本.
有谁知道可能导致这种延迟的原因是什么?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
Run Code Online (Sandbox Code Playgroud)
MyApp我的应用程序供应商我的应用程序描述MyApp
我的java web start应用程序总是在窗口的右上角显示一个警告图标.这就是我所说的:

我想摆脱它.我试图签署我的应用程序而不购买任何证书,只是使用jarsigner,但图标仍然存在.另一方面,如果我根本不签署应用程序,那么图标也在那里.确切地说,我必须说我的应用程序在基本沙箱中运行.
我可以摆脱这个丑陋的图标吗?我不喜欢它,因为我会针对公众和普通观众,有些人可能会误解其含义.从权威机构购买证书是否有助于删除此图标?
如果它与我的问题有关,这是我的jnlp文件:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+"
codebase="http://localhost:8080/bin/"
href="xxx-webstart.jnlp">
<information>
<title>xxx.com</title>
<vendor>xxx.com</vendor>
</information>
<resources>
<!-- Application Resources -->
<j2se version="1.6+"
href="http://java.sun.com/products/autodl/j2se"/>
<jar href="xxx.jar" main="true" />
</resources>
<application-desc
name="xxx.com"
main-class="com.xxx.client.swing.main.MainClientSwing"
width="400"
height="400">
</application-desc>
<update check="always" policy="always"/>
</jnlp>
Run Code Online (Sandbox Code Playgroud) 使用 macOS Catalina 时,我们遇到以下问题:当应用程序通过双击 JNLP 文件启动时和通过双击安装在桌面上的快捷方式启动时,打开 Java Web Start 应用程序的行为不同。
在第一种情况下(双击下载的 JNLP 文件)应用程序打开时没有访问文件系统的权限 - 尝试以 JAVA 代码获取用户桌面目录中的目录列表总是返回 null。不会向用户显示任何要求访问文件系统的权限的提示。这不是预期的行为。
在第二种情况下(从桌面快捷方式启动),首先提示用户应用程序正在尝试访问文件系统并要求获得许可。当用户允许应用程序访问文件时 - 应用程序正确读取用户的桌面目录。这是预期的行为。
有解决方法吗?如果通过双击JNLP文件启动Catalina上的Web启动应用程序,我们如何使Web启动应用程序访问文件系统(这是应用程序至少第一次启动的方式)?
您好,我正在尝试运行 javaws,但它提示:要打开此 Web Start 应用程序,您需要下载 Java 运行时环境。
我确定 JRE 已安装,也许 javaws 找不到它,我该如何解决这个问题?
Johns-MacBook-Pro:~ johnmactavish$ java --version
java 13.0.2 2020-01-14
Java(TM) SE Runtime Environment (build 13.0.2+8)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
Johns-MacBook-Pro:~ johnmactavish$ javaws
No Java runtime present, requesting install.
Unable to locate a Java Runtime to invoke.
Johns-MacBook-Pro:~ johnmactavish$
Run Code Online (Sandbox Code Playgroud) 我正在将我的项目部署到要使用java Web Start部署的Web服务器.但是,Web Start使用修改日期来确定是否再次下载资源(默认情况下).
我想要的是一种只部署那些尚不存在的(jar)文件的方法.这可以通过在我的所有罐子上都有构建版本号来实现,因此具有相同名称的2个罐子具有相同的内容.
笔记:
我下载了.jnlp文件并运行它.它运行正常.我关闭它并重新启动它运行正常.
但是在第三次尝试时,它总是抛出java.lang.NullPointerException,应用程序将无法启动.
如果我重新启动计算机,它会再次运行.我怎样才能解决这个问题 ?
java.lang.NullPointerException
at com.sun.javaws.security.SigningInfo.overlapSigners(Unknown Source)
at com.sun.javaws.security.SigningInfo.getCertificates(Unknown Source)
at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(Unknown Source)
at com.sun.javaws.LaunchDownload.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$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud) 我可以在iPad上运行Java应用程序(Java Web Start)吗?
看起来这是不可能的,但有人建议使用Cloud Browse(我找不到的应用程序)来运行Java.
有解决方案吗
UPDATE:云浏览器是一个应用程序是可以在App Store,但它已被删除我的苹果.Cloud Browse将在外部处理网站,然后将网站内容流式传输到iPad屏幕(类似于视频流).
我试图了解使用Java Web Start的用例是什么.它比Web应用程序有什么优势.Java Web开始今天仍然有用吗?
由于严格的安全限制的7u51,在一月份到期,我想我签字JNLP文件.
我们的应用程序需要设置某些自定义系统属性,其中一些属性的值会根据applet的部署位置而有所不同.我想避免为每个部署重新签名包含JNLP模板的JAR.
放入<property name="my-prop" value="*"/>JNLP模板的天真方法不起作用.
即使<property name="my-prop" value="fixed-value"/>在模板中,我有时会得到一个对话框,说"此应用程序将执行不安全的操作.你想继续吗?":

将系统属性传递给签名的Java RIA的正确方法是什么?