From c3db87f30d10396e03378ffa360dd11809a62eec Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Fri, 4 May 2018 08:22:53 +0300 Subject: [PATCH] Gradle/C++: workaround NoClassDefFoundError sometimes happened on CI windows10 agent with MSVC 2017 --- .../native/tooling/src/builder/CppModelBuilder.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/gradle/native/tooling/src/builder/CppModelBuilder.java b/plugins/gradle/native/tooling/src/builder/CppModelBuilder.java index 651e35fcfe71..1d4737f5f3cd 100644 --- a/plugins/gradle/native/tooling/src/builder/CppModelBuilder.java +++ b/plugins/gradle/native/tooling/src/builder/CppModelBuilder.java @@ -26,7 +26,6 @@ import org.gradle.nativeplatform.toolchain.Clang; import org.gradle.nativeplatform.toolchain.Gcc; import org.gradle.nativeplatform.toolchain.NativeToolChain; import org.gradle.nativeplatform.toolchain.VisualCpp; -import org.gradle.nativeplatform.toolchain.internal.NativeLanguageTools; import org.gradle.nativeplatform.toolchain.internal.PlatformToolProvider; import org.gradle.nativeplatform.toolchain.internal.ToolType; import org.gradle.nativeplatform.toolchain.internal.tools.CommandLineToolSearchResult; @@ -46,6 +45,7 @@ import org.jetbrains.plugins.gradle.tooling.ModelBuilderService; import java.io.File; import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.util.*; /** @@ -196,9 +196,13 @@ public class CppModelBuilder implements ModelBuilderService { Field visualCppField = toolProvider.getClass().getDeclaredField("visualCpp"); visualCppField.setAccessible(true); Object visualCpp = visualCppField.get(toolProvider); - if (visualCpp instanceof NativeLanguageTools) { - return ((NativeLanguageTools)visualCpp).getCompilerExecutable(); - } + + //if (visualCpp instanceof NativeLanguageTools) { + // return ((NativeLanguageTools)visualCpp).getCompilerExecutable(); + //} + Method getCompilerExecutable = visualCpp.getClass().getMethod("getCompilerExecutable"); + Object compilerExecutable = getCompilerExecutable.invoke(visualCpp); + return (File)compilerExecutable; } } }