2010-11-25 12 views
2

ファイルから別のJavaプログラムを読み込み、コンパイルしてエラーと警告を表示するJavaプログラムを作成します。別のJavaプログラムを使用してJavaプログラムをコンパイルする

また、ファイルから読み込まれてコンパイルされたプログラムの出力を表示したいとします。

どうすればいいですか?

+0

+1興味深い質問です。私は答えが出てくるのを見たいと思います。 – Neil

答えて

1

これは割り当てでなければなりません。 Start here

3

javax.tools.JavaCompilerをご覧ください。

プログラムからJava™プログラミング言語コンパイラを呼び出すためのインタフェース。

コンパイル時に、コンパイル時に診断メッセージ(エラーメッセージなど)が生成されることがあります。診断リスナーが提供されている場合、診断プログラムはリスナーに供給されます。リスナーが提供されていない場合、診断は不特定のフォーマットでフォーマットされ、特に指定されない限りSystem.errであるデフォルトの出力に書き込まれます。診断リスナーが提供されていても、一部の診断はDiagnosticに適合せず、デフォルト出力に書き込まれます。

ここで私が最近使用した少しのコード・スニペットです:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 
StandardJavaFileManager fileManager = 
     compiler.getStandardFileManager(null, null, null); 

fileManager.setLocation(StandardLocation.CLASS_OUTPUT, compileDirList); 


Iterable<? extends JavaFileObject> compilationUnits = 
     fileManager.getJavaFileObjectsFromFiles(files); 

List<String> opts = new ArrayList<String>(); 
// set compiler's classpath to be same as the runtime's 
opts.addAll(Arrays.asList("-classpath", System.getProperty("java.class.path"))); 

// do the actual compilation 
compiler.getTask(null, fileManager, null, opts, null, compilationUnits).call(); 
0

だけのjavacを実行するためにSystem.execを使用しています。次に、コンパイルが完了したときに読み込んだファイルに出力をパイプすることができます。このようなもの:

System.exec( "javac * .java> output.out"); readFile( "output.out");

希望します。

0

'Javaプログラムをファイルから読み込み、コンパイルし、エラーと警告を表示するJavaプログラムは、Javaコンパイラと呼ばれます。すでに書かれています。 APIまたはexec()のいずれかを使用して呼び出すだけです。

+0

exec()を使用して実装する方法は? '' Process p = Runtime.getRuntime()。exec( "javac FileName.java"); '<ファイルがすでに存在しているとみなす>とはいえ、o/pは生成されません。 –

関連する問題