Executando arquivo .jar - clique duas vezes vs. execução da linha de comando

Eu tenho um aplicativo de desktop java que contém o seguinte código:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
System.out.println("check1");
int intResult = compiler.run(System.in, System.out, foutErrorFile, strvalidatePath);
System.out.println("check2");

Quando executo o arquivo .jar correspondente deste aplicativo executando "java -jar name.jar", o check1 e o check2 são impressos e o aplicativo funciona bem. Mas quando tento executar o jar clicando duas vezes no arquivo .jar, descobri que ToolProvider.getSystemJavaCompiler () está retornando nulo. "check2" não é impresso. Eu não obtenho resultado adequado de compiler.run ().

Modifiquei a entrada do registro "\ HKEY_CLASSES_ROOT \ jarfile \ shell \ open \ command" de "C: \ Arquivos de programas \ Java \ jre1.6.0 \ bin \ javaw.exe" -jar "% 1"% * para "C: \ Arquivos de Programas \ Java \ jre1.6.0 \ bin \ java.exe "-jar"% 1 "% *. Dessa forma, eu consigo ver o console quando o aplicativo está sendo executado.

Então, por que meu programa (que funciona bem enquanto é executado com o comando java -jar) não funciona quando executo o arquivo .jar clicando duas vezes?

questionAnswers(2)

yourAnswerToTheQuestion