2012-07-24 4 views
2

Java 웹 시작을 사용하여 다른 응용 프로그램을 시작해야하는 일부 응용 프로그램에서 작업 중입니다. 이 설계 방법은 다음과 같이이다 :"잘못된 인수 예외"로 인해 Java 웹 시작이 시작되지 않음

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 비트가있는 PC에서 실행하면 어쨌든 실패합니다.

두 번째로 명령 인수를 작게 만들면 작동합니다. 따라서 명령의 길이에 따라 예외가 발생하는지 여부가 결정됩니다. 그러나 이클립스에서는 명령의 길이에 상관없이 작동한다.

이 동작이 왜 발생하는지 이해할 수 없습니까?

답변

2

바탕 화면 아이콘과 Java 7이있는 Webstart 응용 프로그램을 시작할 때 같은 문제가 있습니다.이 조합 만 실패합니다. 링크로 시작하면 jnlp 파일 또는 Java 6은 아무런 문제가 없습니다.

이는 웹 브라우저가 아닌 클라이언트의 자바 버전 때문에 발생합니다. 예외는 Java Web Start에 의해 "continueInSecureThread"메서드를 호출 할 때 throw됩니다.이 메서드는 JRE7에서 이전 버전과 다른 메서드 서명을 가지고있을 가능성이 큽니다. 콘텐츠 형식을 설정 SAP Forum conversation

에서 너무 aResponse.setContentType ("응용 프로그램/X-자바 JNLP 파일을") 도움이 될;

나에게 꽤 합당한 것 같습니다.