こんにちは私はJavaクラスの実行時に作成、コンパイル、ロードする必要があります。FTLを使用して、Javaソースファイルを作成しています。動的な依存関係がない場合は、ソースをコンパイルできます。
インスタンスを詳しく説明するために、2つのJavaソースファイル、1つのインターフェイスとその実装クラスがあります。次のようにJavaコンパイラAPIを使用してインターフェイスをコンパイルできます
String classpath=System.getProperty("java.class.path");
String testpath =classpath+";"+rootPath+"/lib/is_wls_client.jar;"+rootPath+"/rtds_wls_proxyclient.jar;.;";
File javaFile = new File(javaFileName+".java");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
List<String> optionList = new ArrayList<String>();
optionList.addAll(Arrays.asList("-classpath",testpath));
StandardJavaFileManager sjfm = compiler.getStandardFileManager(null, null, null);
Iterable fileObjects = sjfm.getJavaFileObjects(javaFile);
JavaCompiler.CompilationTask task = compiler.getTask(null, null, null,optionList,null,fileObjects);
task.call();
sjfm.close();
すでにクラスパスにある静的クラスのクラスパスを設定しましたが、このアプローチは動的に作成されたクラスでは機能しませんか?カスタムクラスローダーで修正できますか?私の最終的な実装はウェブ/アプリサーバーになります
フィードバックは大歓迎です
Satheesh