2

JavaWebStartを使用して別のアプリを起動する必要があるアプリケーションに取り組んでいます。それが設計されている方法は次のようです:

 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)

しかし、実際にはどのように実行するかによって異なります。コマンドラインからJava664ビットを使用すると、前述のように失敗します。しかし、日食の内側からは例外をスローすることなく正常に動作します。Java6を搭載したPCから実行すると、32ビットはとにかく失敗します。

次に、コマンド引数を小さくすると機能します。したがって、コマンドの長さに応じて、例外が発生するかどうかがわかります。ただし、Eclipseでは、コマンドの長さに関係なく機能します。

なぜこの振る舞いなのか理解できませんか?

4

1 に答える 1

2

デスクトップアイコンとJava7を使用してWebスタートアプリケーションを起動しているときに同じ問題が発生します。この組み合わせのみが失敗します。リンクから始めて、jnlpファイルまたはJava6で問題はありません。

これは、Webブラウザではなく、クライアントのJavaバージョンが原因で発生します。例外は、メソッド「continueInSecureThread」を呼び出すときにJava Web Startによってスローされます。これは、JRE7では以前のバージョンとは異なるメソッドシグネチャを持っている可能性があります。SAPフォーラムの会話から

コンテンツタイプを設定すると、aResponse.setContentType( "application / x-java-jnlp-file");も役立ちます。

私にはかなり合理的なようです。

于 2012-09-04T07:48:56.853 に答える