标签: jnlp

Java Web Start 中的版本控制

有人知道在 JNLP 文件中指定什么,以便不会一直下​​载 JARS,而只有在服务器端有新版本时才下载吗?我知道我可以指定:version="1.5" 完全是 1.5 版,或 version="1.6+" 1.6 或更高版本。

让我们以 version="1.6+" 为例。如果用户使用 1.7 版本,则不会下载 JAR,即使在服务器上 JAR 不断更新到 1.8、1.9 等等...我希望下载 JAR,但仅当服务器上有新版本时边。这能做到吗?

谢谢,特奥

jnlp java-web-start

5
推荐指数
1
解决办法
4269
查看次数

使用 Maven 创建一个包含 JNLP 的 jar-with-dependencies.jar 的 .war 文件

我有一个 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 jnlp java-web-start maven

5
推荐指数
1
解决办法
5423
查看次数

通过网络将参数/参数传递给 jnlp。有哪些选择?

目前我有一个使用 Java web start 通过 JNLP 运行的应用程序。用户可以点击一个特定的 URL 并启动这个应用程序就好了。

通过使用 j2seproperty 标记,我可以在 build.xml(ant web start)内向 JNLP 文件本身添加属性,例如这个。

<jw:j2se>

<j2seproperty name="testProperty" value="1"/>

</jw:j2se>

并且可以通过以下方式在代码中的任何位置访问这些属性: System.getProperty("testProperty");

问题是我希望能够通过 html 设置这些属性,如下所示。

'http://localhost:8080/somelink?testProperty=2'

我有哪些选择来实现这一目标?我已经做了一些研究,到目前为止,似乎唯一的解决方案是以某种方式通过某种 servlet 动态创建 JNLP 启动器。

这是正确的,如果不正确,这里还有其他选择吗?如果是这样,我愿意接受所有可能性......

java ant jnlp arguments properties

5
推荐指数
1
解决办法
3663
查看次数

第 100 次下载后 Webstart Chrome

我们有一个 Java 应用程序,我们的客户可以通过 webstart 启动它。我们有一些可用性问题:

在 jnlp 文件的链接上最多点击一百次,“chrome”只是下载 jnlp 文件,以增量方式命名它:index(1).jnlp、index(2).jsp 等,然后启动应用程序。但是在下载 100 次后,当用户点击链接时,chrome 会打开一个“另存为”对话框。然后用户点击保存;chrome 询问“此文件已存在,您真的要替换它吗?” 用户说是,Chrome 下载 jnlp 等。

这个过程会产生可用性问题。为了避免它,我们开始定期更改 jnlp 文件的名称。但是当用户第一次点击新的 jnlp 链接时,chrome 会询问“这种类型的文件会损害您的计算机。您是否要保留 .......jnlp 呢?” 在下载文件之前。这创建了单击另一个按钮的另一个步骤。当然,它会吓到用户。

尽管 chrome 对这个问题的处理有问题,但 Firefox 顺利地在 100 之后继续增加文件名编号。

我们如何用 chrome 解决这个问题,而不要求用户在他们的电脑上做一些复杂的调整?

java jnlp google-chrome java-web-start

5
推荐指数
1
解决办法
1470
查看次数

从 1.8_031 开始,Java WebStart 偶尔会出现 NPE

我们有一个已签名的 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)

java jnlp nullpointerexception java-web-start

5
推荐指数
0
解决办法
459
查看次数

在 java-8-openjdk 中找不到 jnlp-api

java平台从Oracle的jdk8切换到openjdk,现在无法构建maven项目。

Could not find artifact javax.jnlp:jnlp-api:jar:8.0 at specified path /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/javaws.jar
Run Code Online (Sandbox Code Playgroud)

切换回 oracle jdk8 允许构建继续。

我在哪里可以找到用于 openjdk 8 的 jnlp-api?有可用的POM吗?

java jnlp openjdk

5
推荐指数
0
解决办法
737
查看次数

如何使用 Java 运行 jnlp 文件?

我有一个 JNLP 文件,通常我会使用控制台(Linux)执行并且工作完美。

javaws launch.jnlp 
Run Code Online (Sandbox Code Playgroud)

但现在我必须从Java代码运行,我尝试了这个......

Process p = Runtime.getRuntime().exec(new String[]{"path/to/.jnlp"});
p.waitFor();
Run Code Online (Sandbox Code Playgroud)

不工作,因为它应该运行。

java jnlp exec java-web-start

5
推荐指数
1
解决办法
1万
查看次数

不使用 JnlpDownloadServlet 类启动 JNLP

Oracle 建议使用该JnlpDownloadServlet 示例从 Web 应用程序启动 JNLP。

无论出于何种原因,我无法使用它,并且必须编写自己的 JNLP 启动代码。

这就是我想出的(启动它的 Servlet):

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException 
{
    performTask(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException 
{
    performTask(request, response);
}

private void performTask(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException 
{
    response.setContentType("application/x-java-jnlp-file");
    byte [] b = getJNLP(..some params..).getBytes();

    response.setContentLength((int) b.length);
    OutputStream responseOutputStream = response.getOutputStream();
    responseOutputStream.write(b);
}
Run Code Online (Sandbox Code Playgroud)

getJNLP是一种将整个 JNLP 文件作为String.

这似乎工作正常。但我错过了什么吗?是否有任何额外的标题等需要设置?

更新:我不使用 JnlpDownloadServlet 的原因是,我必须从 2 个不同的 Web 应用程序启动此 JNLP - …

.net java jnlp servlets

5
推荐指数
1
解决办法
1073
查看次数

尝试使用 -secret 选项通过 JNLP 通过命令行启动 Jenkins slave 时出现 401 Unauthorized 错误

我正在尝试通过 JNLP 通过命令行启动我的 Jenkins slave,以便我可以将命令放入任务调度程序中。但是,只有当我将 -secret 选项与 Jenkins 生成的密钥一起使用时,我才会面临身份验证问题。如果我使用与 Jenkins 相同的用户名密码传递 -auth 选项,则工作正常。

java -jar slave.jar -jnlpUrl http://<jenkins host>:<port>/jenkins/computer/<Slave name>/slave-agent.jnlp -secret <secret_key> -workDir "C:\Jenkins\Robot"
Run Code Online (Sandbox Code Playgroud)

注意:我尝试执行的命令是从 Jenkins 页面复制的。

它给出以下错误:

 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDirINFO: Using C:\Jenkins\Robot\remoting as a remoting work directory Both error and output logs will be printed to C:\Jenkins\Robot\remoting Not use http_proxy property or environment variable which is invalid: unknown protocol: one.proxy.att.com Failing to obtain http://<host:port>/jenkins/computer/<job>/slave-agent.jnlp?encrypt=true
 java.io.IOException: Failed to load http://<host:port>/jenkins/computer/<job>//slave-agent.jnlp?encrypt=true: 401 Unauthorized
         at hudson.remoting.Launcher.parseJnlpArguments(Launcher.java:485)
         at hudson.remoting.Launcher.run(Launcher.java:316)
         at hudson.remoting.Launcher.main(Launcher.java:277)
 Waiting 10 seconds …
Run Code Online (Sandbox Code Playgroud)

jnlp cmd jenkins jenkins-slave

5
推荐指数
1
解决办法
2109
查看次数

Jenkins - 与从设备的连接丢失 - ClosedChannelException

由于以下原因,当前在我的一些 Jenkins slave 上运行的所有 Jenkins 作业时不时地失败:

java.nio.channels.ClosedChannelException
    at org.jenkinsci.remoting.protocol.NetworkLayer.onRecvClosed(NetworkLayer.java:154)
    at org.jenkinsci.remoting.protocol.impl.NIONetworkLayer.ready(NIONetworkLayer.java:179)
    at org.jenkinsci.remoting.protocol.IOHub$OnReady.run(IOHub.java:721)
    at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

问题只发生在一些奴隶身上,所以这不是主人的问题,我想......

在詹金斯奴隶日志中,我得到了这个:

JNLP agent connected from xxxx
Slave.jar version: 3.7
This is a Windows agent
just before slave SLAVE01 gets online ...
executing prepare script ...
setting up slave SLAVE01 ...
slave setup done.
Agent successfully connected and online
ERROR: Connection terminated
[8mha:////4JmhQISHGLISGlsTHOZXEPbCK6pxtJiroBix+jLdfCfh/YKcSsnpDAAAAVx+LCAAAAAAAA98nsLuhNKKmjNKU4P08vOT+vODjuha&SHllHSE4tKMnMz/PLL0mV3NWzufebKBsTA0NFEYMUmgZnCA1SyAABjKpSSsdxNaiYAAAAA==[0mjava.nio.channels.ClosedChannelException
    at org.jenkinsci.remoting.protocol.NetworkLayer.onRecvClosed(NetworkLayer.java:154)
    at org.jenkinsci.remoting.protocol.impl.NIONetworkLayer.ready(NIONetworkLayer.java:179)
    at org.jenkinsci.remoting.protocol.IOHub$OnReady.run(IOHub.java:721)
    at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown …
Run Code Online (Sandbox Code Playgroud)

jnlp jenkins windows-server-2012-r2

5
推荐指数
0
解决办法
1402
查看次数