2

我正在开发一些必须使用 Java web start 启动另一个应用程序的应用程序。它的设计方式是这样的:

 String commandArg = new String(
    "http://143.56.56.56:8088/configuratorhome/controller?configurationid=1222222222222222222222222222222222222222222222222222222222222c&versionstamp=21593&location=England&applicationlocale=en_US&qo_productid=6178&offline=false&configurationtype=normal&project_name=Devgen+Seeds&customer_no=AAA+MYCompany+Heid+Angebote+09&project_no=A09%2F0356&user_initials=JEJ&group_name=CHD&customer_name=AAA+MYCompany++Heid+Angebote+09&conf_access_right=udv_server&project_contact_name=&product_next_version_no=2&product_version_no=1&product_locale=England&user_name=Jens+Jakobsen&header_phone=5555+55556+5555&header_zipcode=A-79000&header_mail=heid%40cimbria.com&header_fax=-&header_address2=-&header_town=Stockerau&header_country=Austria&header_name=Mycomp+Heid+GmbH&header_address1=Heid-Werkstrasse+4&");

    String[] command = new String[] { "javaws", "\"" + commandArg + "\"" };
     // Runtime.getRuntime().exec(command);
    Process proc = new ProcessBuilder(command).start();

当我运行这个应用程序时,我得到以下异常:

InvalidArgumentException[ Invalid arguments supplied: { }]  
 at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
 at com.sun.javaws.Main$1.run(Unknown Source) 
 at java.lang.Thread.run(Unknown Source)

但这实际上取决于我如何运行它。如果我从命令行使用 Java 6 64bit,它会如前所述失败。但是从内部 Eclipse 可以正常工作而不会引发异常。当我从带有 Java6 32 位的 PC 上运行它时,无论如何都会失败。

其次,如果我使命令参数更小,它就可以工作。因此,根据命令的长度,我是否得到异常。但在 Eclipse 中,无论命令的长度如何,它都能正常工作。

我不明白为什么会有这种行为?

4

1 回答 1

2

在使用桌面图标和 java 7 启动 webstart 应用程序时,我遇到了同样的问题。只有这种组合失败。从链接开始,jnlp 文件或 Java 6 都没有问题。

这是因为客户端的 Java 版本,而不是 Web 浏览器。Java web Start 在调用方法“continueInSecureThread”时抛出异常,该方法在 JRE7 上的方法签名可能与以前版本不同。来自SAP 论坛对话

设置内容类型也有帮助 aResponse.setContentType("application/x-java-jnlp-file");

对我来说似乎很合理。

于 2012-09-04T07:48:56.853 回答