正如标题所说,通过Java Web部署/使用应用程序启动一个可行的选择?我在几年前在网上发现了一些帖子,说只有JavaME应用程序可用.
有人知道在 JNLP 文件中指定什么,以便不会一直下载 JARS,而只有在服务器端有新版本时才下载吗?我知道我可以指定:version="1.5" 完全是 1.5 版,或 version="1.6+" 1.6 或更高版本。
让我们以 version="1.6+" 为例。如果用户使用 1.7 版本,则不会下载 JAR,即使在服务器上 JAR 不断更新到 1.8、1.9 等等...我希望下载 JAR,但仅当服务器上有新版本时边。这能做到吗?
谢谢,特奥
我正在试验Java Web Start.
我刚刚写了一个基本的JApplet,在Applet类上有一个方法叫做getDocumentBase().这会将完整返回URL到Applet正在运行的位置(在Tomcat下),即http:// myserver:8080/myapp/whateverapplet.jar.
但是,我正在寻找与Web启动应用程序类似的东西.我需要知道它在哪里运行.有什么东西能给我这个信息吗?
编辑
就运行的位置而言,我的意思是如果我从我想要的JNLP文件运行Web启动:
如果我从网络上的文件夹运行JAR我想要:
\\服务器\ MYAPP
或者,如果我从我的机器上的文件夹运行JAR,我想:
d:\ MYAPP
结束编辑
我有一个 Maven 项目,它将 Swing 客户端构建为 jar-with-dependencies.jar 文件。我想使用 Java Web Start 来分发这个 my.gui-0.1.0-jar-with-dependencies.jar 文件。为此,我创建了一个单独的 Maven 项目,该项目使用 JNLP 工件构建了一个 .war 文件。我需要在这个 .war 文件中包含 my.gui-0.1.0-jar-with-dependencies.jar。
我无法确定 jar-with-dependencies.jar 文件的 Maven 坐标。如果我将 Maven 坐标用于 GUI 项目,它会将 GUI 项目的依赖 .jar 文件放在 WEB-INF/lib 中,这不是我想要的。我需要在 .war 文件中包含 my.gui-0.1.0-jar-with-dependencies.jar 文件本身。(我想它可能在 WEB-INF/lib 中。)
我如何告诉 Maven 依赖项是 jar-with-dependencies.jar 文件本身?
如果除了告诉 Maven 包含 jar-with-dependencies.jar 本身的机制之外,还有另一种方式也可以工作。jar-with-dependencies.jar 必须位于我为支持 Java Web Start 而创建的 .war 文件中。
我知道有一个 Maven Webstart 插件,但这看起来像是一场噩梦,所以我只是自己构建一个 .war 文件,其中包含必要的 JNLP 工件。
我创建了一个Java webstart应用程序,并创建了一个HTML页面,其中包含启动它的链接.问题是,在谷歌浏览器中,没有选项可以在不保存的情况下"打开"文件.我想创建一个HTML页面,可以自动启动JNLP文件,而无需保存它.或者更确切地说,没有用户必须打开他们的文件浏览器来启动它)这可能吗?
我们有一个 Java 应用程序,我们的客户可以通过 webstart 启动它。我们有一些可用性问题:
在 jnlp 文件的链接上最多点击一百次,“chrome”只是下载 jnlp 文件,以增量方式命名它:index(1).jnlp、index(2).jsp 等,然后启动应用程序。但是在下载 100 次后,当用户点击链接时,chrome 会打开一个“另存为”对话框。然后用户点击保存;chrome 询问“此文件已存在,您真的要替换它吗?” 用户说是,Chrome 下载 jnlp 等。
这个过程会产生可用性问题。为了避免它,我们开始定期更改 jnlp 文件的名称。但是当用户第一次点击新的 jnlp 链接时,chrome 会询问“这种类型的文件会损害您的计算机。您是否要保留 .......jnlp 呢?” 在下载文件之前。这创建了单击另一个按钮的另一个步骤。当然,它会吓到用户。
尽管 chrome 对这个问题的处理有问题,但 Firefox 顺利地在 100 之后继续增加文件名编号。
我们如何用 chrome 解决这个问题,而不要求用户在他们的电脑上做一些复杂的调整?
我目前在JavaFX中加载CSS和图像时遇到了一个主要问题.
目标是使JavaFX加载CSS文件中定义的图像.我可以在IDE和独立执行中轻松地使用它.但是,一旦我将应用程序作为applet运行并在浏览器上下文中运行,一切都会失败.
CSS文件仍然正确加载,但图像文件仍为空白.遗憾的是,我无法找到一种方法来使JavaFX记录为什么图像加载失败.所有图像都位于CSS文件位置的子目录中,例如:
.button-gray {
-fx-border-image-source: url("button/buttongray.png");
}
Run Code Online (Sandbox Code Playgroud)
CSS文件与处理加载它的类位于同一个包中,并且加载如下:
final URL css = Util.class.getResource("sheet.css");
if (css != null) {
parent.getStylesheets().add(css.toExternalForm());
}
Run Code Online (Sandbox Code Playgroud)
我试着已经把资源在根目录下,并加载它Util.class.getClassLoader.getResource(...)和Thread.currentThread().getContextClassLoader.getResource(...).如果应用程序独立执行,两者都可以正常工作.如果从webstart applet上下文启动应用程序,则两者都不起作用.
但正如我所说.在所有情况下都没有迹象表明CSS没有加载.样式表中定义的样式将正确应用,但图像除外.
我不知道这是什么原因.我使用shemnon的gradle javafx插件打包并发布应用程序.
建筑环境:
任何人都知道如何解决这个问题或知道如何调试它.遗憾的是,JavaFX(甚至是CSS Logger)和applet跟踪控制台的日志记录功能都没有说明问题所在.
新的消息!
JNLP文件位于: JNLP-File
但是,这个文件不是问题.问题似乎是生成二进制css文件,该文件是JavaFX for webstart部署过程的一部分.在这个二进制文件中,由于某些未知原因,通过构建环境引用了CSS文件.这会导致CSS加载程序从我的构建服务器上的位置加载图像文件.在我的本地计算机上无效的东西.另一方面,我在本地计算机上进行的构建工作因为文件仍在其寻找的位置.
所以现在问题似乎仅限于存储完全错误的文件引用的二进制css生成.
是否有一个gradle插件来打包Java Webstart(JWS)应用程序,类似于Maven webstart插件的功能?我需要至少自动执行以下任务:
我们有一个已签名的 Java 应用程序,它通过 Java WebStart 分发给客户端,但从 1.8_031 开始,我们有时会看到 NPE。使用Java 1.8_031或更早版本,该应用程序始终有效。同一台机器有时可以运行应用程序,有时不能。清除缓存对此没有影响。
JNLP 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<!--
Java Webstart JNLP File for ESKORT Clearance Workbench Application
$Id: cwb.jnlp.template,v 1.26.2.9.2.1 2015/05/19 12:43:03 PB Exp $
-->
<jnlp codebase="http://T500-DASIM:6610/clearance" href="cwb.jnlp" spec="6.0+">
<information>
<title>ESKORT Clearance Workbench 4.0.0.33</title>
<vendor>Copyright © 2014 Intrasoft International Scandinavia A/S. All rights reserved.</vendor>
<homepage href="http://www.intrasoft-intl.com/eskort"/>
<description>ESKORT Clearance Workbench 4.0.0.33</description>
<description kind="short">Client application for modifying the ESKORT Clearance Risk Analysis Configuration.</description>
<icon href="conf/ClearanceWorkbench64.jpg"/>
<icon href="conf/ClearanceWorkbenchSplash.jpg" kind="splash"/>
<related-content href="http://www.intrasoft-intl.com/eskort"/>
<!--offline-allowed/--> …Run Code Online (Sandbox Code Playgroud) 我在javaws实用程序中遇到了一个相当神秘的问题,并且不知道该如何进行根本原因的调查。
这是我设法收集的信息:
$ cat /etc/os-release
ID=wrlinux
NAME=Wind River Linux
VERSION=6.0.0.17
VERSION_ID=6.0.0.17
PRETTY_NAME=Wind River Linux 6.0.0.17
$ rpm -qa | grep jdk
jdk-fonts-1.5.0-u19r0.0.lib32_x86
jdk-plugin-1.5.0-u19r0.0.lib32_x86
jdk-1.5.0-u19r0.0.lib32_x86
jdk-dev-1.5.0-u19r0.0.lib32_x86
jdk7-1.7.0-u51r2.0.lib32_x86
jdk7-plugin-1.7.0-u51r2.0.lib32_x86
jdk7-fonts-1.7.0-u51r2.0.lib32_x86
jdk7-dev-1.7.0-u51r2.0.lib32_x86
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:$HOME:/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin
Run Code Online (Sandbox Code Playgroud)
(出于机密原因,我在此处删除了部分路径)
我目前有2个版本可用,但只有1.7版本可以使用。我应该对Java版本进行升级,但是几乎到最后该错误就会出现。
首先,应按预期运行的命令如下:
$ javaws http://link_to_file.jnlp
Run Code Online (Sandbox Code Playgroud)
这是我执行的命令,下面有一些附加说明:
$ javaws http://link_to_file.jnlp
Disabling Java as it is too old and likely to be out of date. To reenable use jcontrol utility
Run Code Online (Sandbox Code Playgroud)
实际上,这不会禁用Java,并且多次执行该命令会得到相同的结果。
$ javaws -verbose http://link_to_file.jnlp
Java(TM) Web Start 10.51.2.13-fcs Launching: /usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin/java
/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin/java
-classpath
/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/deploy.jar
-Djava.security.policy=file:/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/security/javaws.policy
-DtrustProxy=true
-Xverify:remote
-Djnlpx.home=/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin …Run Code Online (Sandbox Code Playgroud)