making build work with java 9ea (IDEA-134285)

This commit is contained in:
Eugene Zhuravlev
2014-12-18 20:35:30 +01:00
parent cabfec01e9
commit 01f5116737
2 changed files with 16 additions and 5 deletions
@@ -104,8 +104,7 @@ import org.jetbrains.jps.cmdline.ClasspathBootstrap;
import org.jetbrains.jps.incremental.Utils;
import org.jetbrains.jps.model.serialization.JpsGlobalLoader;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
import javax.tools.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
@@ -951,7 +950,10 @@ public class BuildManager implements ApplicationComponent{
}
cmdLine.addParameter("-Djava.awt.headless=true");
cmdLine.addParameter("-Djava.endorsed.dirs=\"\""); // turn off all jre customizations for predictable behaviour
if (sdkVersion != null && sdkVersion.ordinal() < JavaSdkVersion.JDK_1_9.ordinal()) {
//-Djava.endorsed.dirs is not supported in JDK 9+, may result in abnormal process termination
cmdLine.addParameter("-Djava.endorsed.dirs=\"\""); // turn off all jre customizations for predictable behaviour
}
if (IS_UNIT_TEST_MODE) {
cmdLine.addParameter("-Dtest.mode=true");
}
@@ -41,7 +41,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
* Date: 1/21/12
*/
public class JavacMain {
private static final boolean IS_VM_6_VERSION = System.getProperty("java.version", "1.6").contains("1.6");
private static final String JAVA_VERSION = System.getProperty("java.version", "");
//private static final boolean ECLIPSE_COMPILER_SINGLE_THREADED_MODE = Boolean.parseBoolean(System.getProperty("jdt.compiler.useSingleThread", "false"));
private static final Set<String> FILTERED_OPTIONS = new HashSet<String>(Arrays.<String>asList(
"-d", "-classpath", "-cp", "-bootclasspath"
@@ -75,7 +76,9 @@ public class JavacMain {
final List<JavaSourceTransformer> transformers = getSourceTransformers();
final boolean usingJavac = compilingTool instanceof JavacCompilerTool;
final JavacFileManager fileManager = new JavacFileManager(new ContextImpl(compiler, diagnosticConsumer, outputSink, canceledStatus, usingJavac), transformers);
final JavacFileManager fileManager = new JavacFileManager(
new ContextImpl(compiler, diagnosticConsumer, outputSink, canceledStatus, canUseOptimizedFileManager(compilingTool)), transformers
);
if (!platformClasspath.isEmpty()) {
// for javac6 this will prevent lazy initialization of Paths.bootClassPathRtJar
@@ -188,6 +191,12 @@ public class JavacMain {
return false;
}
private static boolean canUseOptimizedFileManager(JavaCompilingTool compilingTool) {
// since java 9 internal API's used by the optimizedFileManager have changed
return compilingTool instanceof JavacCompilerTool &&
(JAVA_VERSION.contains("1.6") || JAVA_VERSION.contains("1.7") || JAVA_VERSION.contains("1.8"));
}
private static void handleCancelException(DiagnosticOutputConsumer diagnosticConsumer) {
diagnosticConsumer.report(new PlainMessageDiagnostic(Diagnostic.Kind.OTHER, "Compilation was canceled"));
}