2012-07-24 86 views
2

我正在开发一些必须使用Java web start启动另一个应用程序的应用程序。它的设计方式是这样的:Java web启动无法启动,出现“无效参数异常”

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,则会失败,如上所述。但从内部的日食工作正常,没有抛出异常。无论如何,当我用Java6 32位电脑运行它时,

其次,如果我使命令参数变小它的作品。因此,根据命令的长度,我会得到例外与否。但是在Eclipse中它可以工作,不管命令的长度如何。

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

回答

2

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

这是因为Java版本的客户端,而不是Web浏览器。 Java web Start在调用方法“continueInSecureThread”时抛出异常,该方法在JRE7上可能具有与先前版本不同的方法签名。 从SAP Forum conversation

设置内容类型可以帮助过 aResponse.setContentType( “应用程序/ x-java的JNLP文件”);

似乎对我来说很合理。