mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Only include ecj compiler into jps classpath, if 'Eclipse' compiler was set in CompilerSettings (IDEA-163375)
This commit is contained in:
@@ -17,8 +17,10 @@ package com.intellij.compiler.server;
|
||||
|
||||
import com.intellij.ProjectTopics;
|
||||
import com.intellij.compiler.CompilerConfiguration;
|
||||
import com.intellij.compiler.CompilerConfigurationImpl;
|
||||
import com.intellij.compiler.CompilerWorkspaceConfiguration;
|
||||
import com.intellij.compiler.impl.CompilerUtil;
|
||||
import com.intellij.compiler.impl.javaCompiler.BackendCompiler;
|
||||
import com.intellij.compiler.impl.javaCompiler.javac.JavacConfiguration;
|
||||
import com.intellij.compiler.server.impl.BuildProcessClasspathManager;
|
||||
import com.intellij.concurrency.JobScheduler;
|
||||
@@ -104,10 +106,10 @@ import org.jetbrains.jps.cmdline.BuildMain;
|
||||
import org.jetbrains.jps.cmdline.ClasspathBootstrap;
|
||||
import org.jetbrains.jps.incremental.Utils;
|
||||
import org.jetbrains.jps.model.java.JpsJavaSdkType;
|
||||
import org.jetbrains.jps.model.java.compiler.JavaCompilers;
|
||||
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;
|
||||
@@ -1180,13 +1182,13 @@ public class BuildManager implements Disposable {
|
||||
launcherCp.add(ClasspathBootstrap.getResourcePath(launcherClass));
|
||||
launcherCp.addAll(BuildProcessClasspathManager.getLauncherClasspath(project));
|
||||
launcherCp.add(compilerPath);
|
||||
ClasspathBootstrap.appendJavaCompilerClasspath(launcherCp);
|
||||
ClasspathBootstrap.appendJavaCompilerClasspath(launcherCp, shouldIncludeEclipseCompiler(projectConfig));
|
||||
cmdLine.addParameter("-classpath");
|
||||
cmdLine.addParameter(classpathToString(launcherCp));
|
||||
|
||||
|
||||
cmdLine.addParameter(launcherClass.getName());
|
||||
|
||||
final List<String> cp = ClasspathBootstrap.getBuildProcessApplicationClasspath(true);
|
||||
final List<String> cp = ClasspathBootstrap.getBuildProcessApplicationClasspath();
|
||||
cp.addAll(myClasspathManager.getBuildProcessPluginsClasspath(project));
|
||||
if (isProfilingMode) {
|
||||
cp.add(new File(workDirectory, "yjp-controller-api-redist.jar").getPath());
|
||||
@@ -1238,6 +1240,15 @@ public class BuildManager implements Disposable {
|
||||
return processHandler;
|
||||
}
|
||||
|
||||
private boolean shouldIncludeEclipseCompiler(CompilerConfiguration config) {
|
||||
if (config instanceof CompilerConfigurationImpl) {
|
||||
final BackendCompiler javaCompiler = ((CompilerConfigurationImpl)config).getDefaultCompiler();
|
||||
final String compilerId = javaCompiler != null? javaCompiler.getId() : null;
|
||||
return JavaCompilers.ECLIPSE_ID.equals(compilerId) || JavaCompilers.ECLIPSE_EMBEDDED_ID.equals(compilerId);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public File getBuildSystemDirectory() {
|
||||
return new File(mySystemDirectory, SYSTEM_ROOT);
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ public class ClasspathBootstrap {
|
||||
private ClasspathBootstrap() {
|
||||
}
|
||||
|
||||
public static List<String> getBuildProcessApplicationClasspath(boolean isLauncherUsed) {
|
||||
public static List<String> getBuildProcessApplicationClasspath() {
|
||||
final Set<String> cp = ContainerUtil.newHashSet();
|
||||
|
||||
cp.add(getResourcePath(BuildMain.class));
|
||||
@@ -147,10 +147,6 @@ public class ClasspathBootstrap {
|
||||
cp.addAll(getJavac8RefScannerClasspath());
|
||||
//don't forget to update layoutCommunityJps() in layouts.gant accordingly
|
||||
|
||||
if (!isLauncherUsed) {
|
||||
appendJavaCompilerClasspath(cp);
|
||||
}
|
||||
|
||||
try {
|
||||
final Class<?> cmdLineWrapper = Class.forName("com.intellij.rt.execution.CommandLineWrapper");
|
||||
cp.add(getResourcePath(cmdLineWrapper)); // idea_rt.jar
|
||||
@@ -161,15 +157,17 @@ public class ClasspathBootstrap {
|
||||
return ContainerUtil.newArrayList(cp);
|
||||
}
|
||||
|
||||
public static void appendJavaCompilerClasspath(Collection<String> cp) {
|
||||
public static void appendJavaCompilerClasspath(Collection<String> cp, boolean includeEcj) {
|
||||
final Class<StandardJavaFileManager> optimizedFileManagerClass = getOptimizedFileManagerClass();
|
||||
if (optimizedFileManagerClass != null) {
|
||||
cp.add(getResourcePath(optimizedFileManagerClass)); // optimizedFileManager
|
||||
}
|
||||
|
||||
File file = EclipseCompilerTool.findEcjJarFile();
|
||||
if (file != null) {
|
||||
cp.add(file.getAbsolutePath());
|
||||
if (includeEcj) {
|
||||
File file = EclipseCompilerTool.findEcjJarFile();
|
||||
if (file != null) {
|
||||
cp.add(file.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user