Java webstart を使用して配布されるスイング アプリケーションを構築しています。これは、アプリのユーザーが Java ソース コードをコンパイルできる Java エディタのようなものです。
問題は -
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
開発環境では問題なく動作します。しかし、webstart を使用してアプリをデプロイすると、クライアント側で null が返されます。これは、アプリが JDK ではなく JRE で実行されているためです。[System.getProperty("java.home") が JRE を指す]
この問題を克服するために、次の SO スレッドに記載されている提案に従いました。
java.home プロパティを JDK のインストール ディレクトリに指定しています。
System.setProperty("java.home","C:\\DevEnv\\java");
有効なコンパイラ オブジェクトを返すようになりましToolProvider.getSystemJavaCompiler();
たが、それを使用して Java コードをコンパイルしているときに次の例外が発生します。実際には、コンパイラ オブジェクトの getStandardFileManager メソッドを呼び出している間です。
コード
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
System.out.println("Compiler - " + compiler);
if(compiler!=null){
MyDiagnosticListener c = new MyDiagnosticListener(logWindow);
StandardJavaFileManager fileManager = compiler.getStandardFileManager(c, Locale.ENGLISH, null);
Iterable<String> options = Arrays.asList("-d", CLASS_OUTPUT_DIR);
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager,
c, options, null, files);
Boolean result = task.call();
}
例外 -
この問題を解決するのを手伝ってください。
JNLP を追加
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://<dynamic-ip>:8080/" href="ProjT.jnlp">
<information>
<title>Tectra</title>
<vendor>Manas Kumar Mukherjee</vendor>
<homepage href="http://<dynamic-ip>:8080/" />
<description>Testing Testing</description>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+" />
<jar href="Tools.jar" />
...
<jar href="log4j-1.2.16.jar" />
</resources>
<application-desc main-class="com.ui.DevMain" />
</jnlp>
ありがとう