正在编译需要编译几个源文件(.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的替代方案。 –
您真的需要在每次启动时编译类吗? –