正在編譯需要編譯幾個源文件(.java)的應用程序,並在運行時生成相應的類文件(.class),這發生在應用程序啓動時。Java運行時編譯和類文件生成
目前使用以下代碼類生成:
int errorCode = com.sun.tools.javac.Main.compile(new String[] {
"-cp", classPath,
"-d", pOutputPath,
srcFile.getAbsolutePath() },new PrintWriter(out));
每* java文件幾乎沒有與單個方法中的一些40行代碼。但是上面給出的代碼需要編譯的時間大約是每個文件2秒。
應用程序有超過1000或有時2000個java文件。所以應用程序啓動時間超過2000或4000秒,這是不可取的。
com.sun.tools.javac.Main.compile
的任何替代方法?
或者更好或更快的方式進行運行時編譯和類文件生成?
我不能使用多線程,因爲環境是單線程的。
你不能使用'CachedThreadPool'和消防作業來編譯文件嗎? – TheLostMind
實際上,單個線程正在迭代目錄和編譯中的文件。如果我有多個線程,那麼我需要有很多線程安全措施,比如鎖定,同步等。尋找更快的Main.compile的替代方案。 –
您真的需要在每次啓動時編譯類嗎? –