Decompiler tool of my IDE is not working.
Here is my code which I want to decompile:
data class FetchOrdersState(
val orders: List<Order> = listOf(),
val isLoading: Boolean = false,
val error: String = ""
) : OrderState {
companion object {
val Empty = FetchOrdersState()
}
}
This is the error I am getting in the IDE when I visit Tools > Kotlin > Show Kotlin Bytecode
org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error:
Failed to generate expression: KtCallExpression
File being compiled: (20,31) in /Users/.../src/commonMain/kotlin/.../OrderState.kt
The root cause java.lang.IllegalStateException was thrown at: org.jetbrains.kotlin.codegen.state.KotlinTypeMapper$Companion.getPackageMemberContainingClassesInfo(KotlinTypeMapper.kt:1386)
at org.jetbrains.kotlin.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:356)
at org.jetbrains.kotlin.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:314)
at org.jetbrains.kotlin.codegen.ExpressionCodegen.gen(ExpressionCodegen.java:430)
at org.jetbrains.kotlin.codegen.DefaultParameterValueLoader.lambda$static$0(DefaultParameterValueLoader.java:30)
at org.jetbrains.kotlin.codegen.FunctionCodegen.lambda$generateDefaultImplBody$5(FunctionCodegen.java:1278)
at org.jetbrains.kotlin.codegen.ExpressionCodegen.runWithShouldMarkLineNumbers(ExpressionCodegen.java:1559)
at org.jetbrains.kotlin.codegen.FunctionCodegen.generateDefaultImplBody(FunctionCodegen.java:1274)
at org.jetbrains.kotlin.codegen.FunctionCodegen.generateDefaultIfNeeded(FunctionCodegen.java:1203)
at org.jetbrains.kotlin.codegen.ConstructorCodegen.generatePrimaryConstructor(ConstructorCodegen.java:112)
at org.jetbrains.kotlin.codegen.ImplementationBodyCodegen.generateConstructors(ImplementationBodyCodegen.java:457)
at org.jetbrains.kotlin.codegen.ClassBodyCodegen.generateBody(ClassBodyCodegen.java:96)
at org.jetbrains.kotlin.codegen.MemberCodegen.generate(MemberCodegen.java:132)
at org.jetbrains.kotlin.codegen.MemberCodegen.genClassOrObject(MemberCodegen.java:305)
at org.jetbrains.kotlin.codegen.MemberCodegen.genClassOrObject(MemberCodegen.java:289)
at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generateClassesAndObjectsInFile(PackageCodegenImpl.java:119)
at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generateFile(PackageCodegenImpl.java:138)
at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generate(PackageCodegenImpl.java:70)
at org.jetbrains.kotlin.codegen.DefaultCodegenFactory.generatePackage(CodegenFactory.kt:77)
at org.jetbrains.kotlin.codegen.DefaultCodegenFactory.generateModule(CodegenFactory.kt:62)
at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:35)
at org.jetbrains.kotlin.idea.core.KotlinCompilerIde.compile(KotlinCompilerIde.kt:144)
at org.jetbrains.kotlin.idea.internal.KotlinBytecodeToolWindow$Companion.compileSingleFile(KotlinBytecodeToolWindow.kt:272)
at org.jetbrains.kotlin.idea.internal.KotlinBytecodeToolWindow$Companion.getBytecodeForFile(KotlinBytecodeToolWindow.kt:235)
at org.jetbrains.kotlin.idea.internal.KotlinBytecodeToolWindow$UpdateBytecodeToolWindowTask.processRequest(KotlinBytecodeToolWindow.kt:111)
at org.jetbrains.kotlin.idea.internal.KotlinBytecodeToolWindow$UpdateBytecodeToolWindowTask.processRequest(KotlinBytecodeToolWindow.kt:60)
at org.jetbrains.kotlin.idea.util.LongRunningReadTask$1$1.run(LongRunningReadTask.java:115)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:866)
at org.jetbrains.kotlin.idea.util.LongRunningReadTask.lambda$runWithWriteActionPriority$0(LongRunningReadTask.java:235)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:178)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:658)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:610)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:65)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:165)
at org.jetbrains.kotlin.idea.util.LongRunningReadTask.runWithWriteActionPriority(LongRunningReadTask.java:235)
at org.jetbrains.kotlin.idea.util.LongRunningReadTask$1.run(LongRunningReadTask.java:110)
at com.intellij.util.RunnableCallable.call(RunnableCallable.java:20)
at com.intellij.util.RunnableCallable.call(RunnableCallable.java:11)
at com.intellij.openapi.application.impl.ApplicationImpl$1.call(ApplicationImpl.java:276)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalStateException: No implClassName for #kotlin.internal.InlineOnly public inline fun <T> listOf(): kotlin.collections.List<T> defined in kotlin.collections[DeserializedSimpleFunctionDescriptor#43dad151]
at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper$Companion.getPackageMemberContainingClassesInfo(KotlinTypeMapper.kt:1386)
at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper$Companion.getPackageMemberOwnerInternalName(KotlinTypeMapper.kt:1369)
at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper$Companion.internalNameForPackageMemberOwner(KotlinTypeMapper.kt:1315)
at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper$Companion.access$internalNameForPackageMemberOwner(KotlinTypeMapper.kt:1283)
at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper.mapOwner(KotlinTypeMapper.kt:163)
at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper.mapOwner(KotlinTypeMapper.kt:142)
at org.jetbrains.kotlin.codegen.state.KotlinTypeMapper.mapToCallableMethod(KotlinTypeMapper.kt:544)
at org.jetbrains.kotlin.codegen.ExpressionCodegen.resolveToCallable(ExpressionCodegen.java:2727)
at org.jetbrains.kotlin.codegen.ExpressionCodegen.invokeFunction(ExpressionCodegen.java:2602)
at org.jetbrains.kotlin.codegen.ExpressionCodegen.invokeFunction(ExpressionCodegen.java:2576)
at org.jetbrains.kotlin.codegen.ExpressionCodegen.visitCallExpression(ExpressionCodegen.java:2470)
at org.jetbrains.kotlin.codegen.ExpressionCodegen.visitCallExpression(ExpressionCodegen.java:125)
at org.jetbrains.kotlin.psi.KtCallExpression.accept(KtCallExpression.java:35)
at org.jetbrains.kotlin.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:332)
... 45 more
This works absolutely fine if I comment out the listOf() line from my data class.
I'm new to JBehave and trying to get a simple test running within Android Studio. I've started with a new project (specifying "Add no activity"), modified the app/build.gradle file to include the dependency for JBehave, and added 3 files: app/stories/example.story, IntegrationTestStoryRunner.java and ExampleSteps.java. I can successfully run IntegrationTestStoryRunner when the 2 java files are located in the src/test/java/... folder, but when I move the identical files to the src/androidTest/java/... folder the build fails.
I'm using:
Android Studio v3.1.4 (latest updates as of 9/23/2018)
JBehave Syntax Support plugin v1.62
Running on Windows 10
Here is the example.story file (default created by plugin):
Narrative:
As a user
I want to perform an action
So that I can achieve a business goal
Scenario: scenario description
Given a system state
When I do something
Then system is in a different state
Here is the JBehave Embedder file, IntegrationTestStoryRunner.java (from Test-Driven Java Development - Garcia/Farcic):
package com.pepperhawk.example.jbehave;
import org.jbehave.core.configuration.Configuration;
import org.jbehave.core.configuration.MostUsefulConfiguration;
import org.jbehave.core.io.*;
import org.jbehave.core.junit.JUnitStories;
import org.jbehave.core.reporters.FilePrintStreamFactory;
import org.jbehave.core.reporters.Format;
import org.jbehave.core.reporters.StoryReporterBuilder;
import org.jbehave.core.steps.InjectableStepsFactory;
import org.jbehave.core.steps.InstanceStepsFactory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class IntegrationTestStoryRunner extends JUnitStories {
#Override
public Configuration configuration() {
return new MostUsefulConfiguration()
.useStoryReporterBuilder(getReporter())
.useStoryLoader(new LoadFromURL());
}
#Override
protected List<String> storyPaths() {
return new StoryFinder().findPaths(
CodeLocations.codeLocationFromPath("").getFile(),
Collections.singletonList("stories/**/*.story"),
new ArrayList<String>(),
"file:"
);
}
#Override
public InjectableStepsFactory stepsFactory() {
return new InstanceStepsFactory(configuration(), new ExampleSteps());
}
private StoryReporterBuilder getReporter() {
return new StoryReporterBuilder()
.withPathResolver(new FilePrintStreamFactory.ResolveToSimpleName())
.withDefaultFormats()
.withFormats(Format.CONSOLE, Format.HTML);
}
}
Here is the ExampleSteps.java file:
package com.pepperhawk.example.jbehave;
import org.jbehave.core.annotations.*;
public class ExampleSteps {
#Given("a system state")
public void givenSystemState() {
}
#When("I do something")
public void whenIDoSomething() {
}
#Then("system is in a different state")
public void thenSystemInDifferentState() {
}
}
And lastly my app/gradle.build file. Only the jbehave line was added at the end:
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.pepperhawk.example.jbehave"
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation "org.jbehave:jbehave-core:4.3.5"
}
I receive two build errors. Here's the shortest:
Program type already present: org.xmlpull.v1.XmlSerializer
Message{kind=ERROR, text=Program type already present: org.xmlpull.v1.XmlSerializer, sources=[Unknown source file], tool name=Optional.of(D8)}
I've truncated the larger error (let me know if you need more):
java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\0.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\1.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\2.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\3.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\4.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\5.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\6.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\7.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\8.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\9.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\10.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\11.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\12.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\13.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\14.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\15.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\16.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\17.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\18.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\19.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\20.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\21.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\22.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\23.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\24.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\25.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\26.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\27.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\28.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\29.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\30.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\33.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\34.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\35.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\40.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\42.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\44.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\45.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\47.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\49.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\50.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\51.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\52.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\53.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\54.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\55.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\56.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\57.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\58.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\59.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\60.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\61.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\62.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\63.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\64.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\65.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\66.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\67.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\68.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\69.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\70.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\71.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\72.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\73.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\74.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\75.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\76.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\77.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\78.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\79.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\80.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\81.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\82.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\83.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\84.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\85.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\86.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\87.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\88.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\89.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\90.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\91.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\92.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\93.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\94.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\95.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\96.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\97.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\98.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\99.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\100.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\101.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\102.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\103.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\104.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\105.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\106.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\107.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\108.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\109.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\112.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\114.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\117.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\118.jar
at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:212)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\0.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\1.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\2.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\3.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\4.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\5.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\6.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\7.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\8.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\9.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\10.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\11.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\12.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\13.jar, C:\Users\Lenny\Projects\SupportProjectsEtc\JBehave\app\build\intermediates\transforms\dexBuilder\androidTest\debug\14.jar,
...
Try something more like this for your StoryPaths:
#Override
protected List<String> storyPaths() {
URL searchLoc = CodeLocations.codeLocationFromClass(this.getClass());
return new StoryFinder().findPaths(searchLoc, Arrays.asList("**/CalcTest.story",
"**/ScrollTest.story",
""),
Arrays.asList("**/excluded*.story"));
}
I haven't looked any further than that in your code, so there might be other issues, but I'm guessing that this is your problem. Obviously, you can replace the array list with whatever files you want to include, this is just one from my Appium project.
I have my info stored in a standard maven file structure with the testrunner itself in src/test/java/(package folders)/testrunners and the stories in src/test/resources/(package folders)
Hope this helps.
build.gradle
plugins {
id 'java'
id 'com.github.johnrengelman.shadow' version '1.2.3'
}
group 'com.hello.aggregation'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'scala'
apply plugin: 'idea'
sourceCompatibility = 1.8
targetCompatibility = 1.8
configurations {
provided
}
sourceSets {
main {
compileClasspath += configurations.provided
}
}
repositories {
mavenCentral()
}
dependencies {
compile "org.scala-lang:scala-library:$scalaVersion"
compile "org.scala-lang:scala-reflect:$scalaVersion"
compile "org.scala-lang:scala-compiler:$scalaVersion"
compile "org.apache.spark:spark-core_$scalaBase:$sparkVersion"
compile "org.apache.spark:spark-sql_$scalaBase:$sparkVersion"
compile "com.datastax.cassandra:cassandra-driver-core:$cassandraDriverVersion"
compile "com.datastax.spark:spark-cassandra-connector_$scalaBase:$connectorVersion"
compile "org.slf4j:slf4j-api:$slf4jVersion"
compile "mysql:mysql-connector-java:$mySqlConnectorVersion"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
task run(type: JavaExec, dependsOn: classes) {
main = mainClassFile
classpath sourceSets.main.runtimeClasspath
classpath configurations.runtime
}
jar {
classifier = 'all'
manifest {
attributes 'Implementation-Title': title,
'Implementation-Version': version,
'Main-Class': mainClassFile
}
include{sourceSets.main.output.classesDir}
zip64 true
}
shadowJar {
classifier = 'shadow'
append 'reference.conf'
dependencies {
}
zip64 true
}
idea {
module {
// IntelliJ does not know about the standard idiom of provided as used in managing
// uber/shaded jar dependencies. Make it so!
scopes.PROVIDED.plus += [ configurations.provided ]
}
}
gradle.properties
version=1.0.0
scalaBase=2.11
scalaVersion=2.11.4
slf4jVersion=1.7.25
sparkVersion=1.6.3
connectorVersion=1.6.7
cassandraDriverVersion=3.0.7
mySqlConnectorVersion=5.1.37
exception:
17/06/19 16:03:54 INFO BlockManagerMaster: Registered BlockManager
Exception in thread "main" java.lang.NoSuchMethodError: scala.runtime.ObjectRef.zero()Lscala/runtime/ObjectRef;
at com.datastax.spark.connector.cql.CassandraConnector$.com$datastax$spark$connector$cql$CassandraConnector$$createSession(CassandraConnector.scala)
at com.datastax.spark.connector.cql.CassandraConnector$$anonfun$7.apply(CassandraConnector.scala:150)
at com.datastax.spark.connector.cql.CassandraConnector$$anonfun$7.apply(CassandraConnector.scala:150)
at com.datastax.spark.connector.cql.RefCountedCache.createNewValueAndKeys(RefCountedCache.scala:32)
at com.datastax.spark.connector.cql.RefCountedCache.syncAcquire(RefCountedCache.scala:69)
at com.datastax.spark.connector.cql.RefCountedCache.acquire(RefCountedCache.scala:57)
at com.datastax.spark.connector.cql.CassandraConnector.openSession(CassandraConnector.scala:80)
at com.datastax.spark.connector.cql.CassandraConnector.withSessionDo(CassandraConnector.scala:107)
at com.datastax.spark.connector.cql.CassandraConnector.withClusterDo(CassandraConnector.scala:118)
at com.datastax.spark.connector.cql.Schema$.fromCassandra(Schema.scala:330)
at com.datastax.spark.connector.cql.Schema$.tableFromCassandra(Schema.scala:350)
at com.datastax.spark.connector.rdd.CassandraTableRowReaderProvider$class.tableDef(CassandraTableRowReaderProvider.scala:50)
at com.datastax.spark.connector.rdd.CassandraTableScanRDD.tableDef$lzycompute(CassandraTableScanRDD.scala:60)
at com.datastax.spark.connector.rdd.CassandraTableScanRDD.tableDef(CassandraTableScanRDD.scala:60)
at com.datastax.spark.connector.rdd.CassandraTableRowReaderProvider$class.verify(CassandraTableRowReaderProvider.scala:137)
at com.datastax.spark.connector.rdd.CassandraTableScanRDD.verify(CassandraTableScanRDD.scala:60)
at com.datastax.spark.connector.rdd.CassandraTableScanRDD.getPartitions(CassandraTableScanRDD.scala:230)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)
at scala.Option.getOrElse(Option.scala:120)
at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)
at org.apache.spark.rdd.RDD$$anonfun$distinct$2.apply(RDD.scala:359)
at org.apache.spark.rdd.RDD$$anonfun$distinct$2.apply(RDD.scala:359)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:150)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:111)
at org.apache.spark.rdd.RDD.withScope(RDD.scala:316)
at org.apache.spark.rdd.RDD.distinct(RDD.scala:358)
at com.achoo.scala.streambright.SimpleDailyRun$.delayedEndpoint$com$achoo$scala$streambright$SimpleDailyRun$1(SimpleDailyRun.scala:30)
at com.achoo.scala.streambright.SimpleDailyRun$delayedInit$body.apply(SimpleDailyRun.scala:14)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.collection.immutable.List.foreach(List.scala:318)
Code:
package com.streambright
import java.sql.{Connection, DriverManager}
import com.mysql.jdbc.Driver
import org.apache.spark.rdd.JdbcRDD
import org.apache.spark.{SparkConf, SparkContext}
import com.datastax.spark.connector.toSparkContextFunctions
import org.apache.spark.sql.cassandra.CassandraSQLContext
object SimpleDailyRun extends App {
DriverManager.registerDriver(new Driver())
val config = new SparkConf(true).setAppName("Simple Daily Run")
val sc = SparkContext.getOrCreate(config)
val cc = new CassandraSQLContext(sc)
cc.setKeyspace("achoo")
val conn = DriverManager.getConnection("jdbc:mysql://10.175.190.95/db?useUnicode=yes&characterEncoding=UTF-8&user=user&password=pass")
val mySqlJdbcRDD = new JdbcRDD(sc, () => conn,
"SELECT b.project_id,a.keyword FROM keyword a " +
"JOIN project_keyword b ON a.id = b.keyword_id LIMIT ?, ?",
0, 100000000, 1, r => (r.getInt("project_id"), r.getString("keyword")))
val cassandraRDD = sc.cassandraTable("hello", "instagram_keyword_analytic")
.select("keyword", "relativepath")
.as((_: String, _: String))
.distinct()
mySqlJdbcRDD.saveAsTextFile("/data/MySQL_projectid_keywords_"+System.currentTimeMillis()+".txt")
cassandraRDD.saveAsTextFile("/data/MySQL_projectid_keywords_"+System.currentTimeMillis()+".txt")
}
Cassandra version: cassandra21-2.1.15-1 (DataStax)
Spark version: 1.6.3
Does anybody know how to fix this?
The fix for this problem is to use Scala 2.10 instead of 2.11.
I'm use spark-streaming to consume protobuf-formated-messages from kafka.
It works fine while the master was set to "local[2]", but when i change the master url to a real spark cluster's master url, I meet the following exception
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 20.0 failed 4 times, most recent failure: Lost task 0.3 in stage 20.0 (TID 58, 10.0.5.155): java.lang.NoSuchMethodError: com.google.protobuf.CodedInputStream.readStringRequireUtf8()Ljava/lang/String;
at cn.xiaoman.eagleeye.Agent$Tag.<init>(Agent.java:83)
at cn.xiaoman.eagleeye.Agent$Tag.<init>(Agent.java:44)
at cn.xiaoman.eagleeye.Agent$Tag$1.parsePartialFrom(Agent.java:638)
at cn.xiaoman.eagleeye.Agent$Tag$1.parsePartialFrom(Agent.java:633)
at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:309)
at cn.xiaoman.eagleeye.Agent$Metric.<init>(Agent.java:797)
at cn.xiaoman.eagleeye.Agent$Metric.<init>(Agent.java:718)
at cn.xiaoman.eagleeye.Agent$Metric$1.parsePartialFrom(Agent.java:1754)
at cn.xiaoman.eagleeye.Agent$Metric$1.parsePartialFrom(Agent.java:1749)
at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:141)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:176)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:188)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:193)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:49)
at cn.xiaoman.eagleeye.Agent$Metric.parseFrom(Agent.java:1058)
at cn.xiaoman.eagleeye.rtmetricprocessor.MetricDeserializer.deserialize(MetricDeserializer.java:25)
at cn.xiaoman.eagleeye.rtmetricprocessor.MetricDeserializer.deserialize(MetricDeserializer.java:14)
at org.apache.kafka.clients.consumer.internals.Fetcher.parseRecord(Fetcher.java:627)
at org.apache.kafka.clients.consumer.internals.Fetcher.parseFetchedData(Fetcher.java:548)
at org.apache.kafka.clients.consumer.internals.Fetcher.fetchedRecords(Fetcher.java:354)
at org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1000)
at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:938)
at org.apache.spark.streaming.kafka010.CachedKafkaConsumer.poll(CachedKafkaConsumer.scala:99)
at org.apache.spark.streaming.kafka010.CachedKafkaConsumer.get(CachedKafkaConsumer.scala:70)
at org.apache.spark.streaming.kafka010.KafkaRDD$KafkaRDDIterator.next(KafkaRDD.scala:227)
at org.apache.spark.streaming.kafka010.KafkaRDD$KafkaRDDIterator.next(KafkaRDD.scala:193)
at scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:462)
at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
at scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:461)
at scala.collection.Iterator$$anon$12.hasNext(Iterator.scala:439)
at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:192)
at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:63)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:79)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:47)
at org.apache.spark.scheduler.Task.run(Task.scala:86)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:274)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Versions:
spark: 2.11-2.0.2
kafka: 2.11-0.10.1.0
protobuf: 3.0.2
Because the task depends on protobuf 3, while the spark runtime depends on another protobuf version.
Solution: Edit build.gradle to relocate com.google.protobuf to another name using 'com.github.johnrengelman.shadow' plugin.
shadowJar {
relocate 'com.google.protobuf', 'shadow.google.protobuf'
}
edit: add full version build.gradle
group 'xxx'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'application'
apply plugin: 'com.google.protobuf'
apply plugin: 'com.github.johnrengelman.shadow'
sourceCompatibility = 1.8
buildscript {
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
dependencies {
// ASSUMES GRADLE 2.12 OR HIGHER. Use plugin version 0.7.5 with earlier
// gradle versions
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.0'
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
}
}
def grpcVersion = '1.0.2'
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
def sparkVersion = '2.0.2'
dependencies {
compile "org.apache.spark:spark-streaming_2.11:${sparkVersion}"
compile "org.apache.spark:spark-streaming-kafka-0-10_2.11:${sparkVersion}"
compile "org.apache.spark:spark-core_2.11:${sparkVersion}"
compile 'com.google.protobuf:protobuf-java:3.1.0'
compile group: 'org.mongodb', name: 'mongo-java-driver', version: '3.4.0'
testCompile 'junit:junit:4.11'
}
protobuf {
protoc {
// The version of protoc must match protobuf-java. If you don't depend on
// protobuf-java directly, you will be transitively depending on the
// protobuf-java version that grpc depends on.
artifact = 'com.google.protobuf:protoc:3.0.2'
}
// plugins {
// grpc {
// artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
// }
// }
// generateProtoTasks {
// all()*.plugins {
// grpc {
// // To generate deprecated interfaces and static bindService method,
// // turn the enable_deprecated option to true below:
// option 'enable_deprecated=false'
// }
// }
// }
}
idea {
module {
// Not using generatedSourceDirs because of
// https://discuss.gradle.org/t/support-for-intellij-2016/15294/8
sourceDirs += file("${projectDir}/build/generated/source/proto/main/java");
}
}
shadowJar {
zip64 true
relocate 'com.google.protobuf', 'shadow.google.protobuf'
}
mainClassName = "xxx.Main"
I'm writing my first Gradle plugin. It's functionally working pretty well, and I have a couple of unit tests working. I'm now starting to set up integration tests using nebula.test. After resolving a simple Spock version number mismatch problem (I was loading 1.0, but nebula.test still uses 0.7) I'm now trying to run my first test. When I run it from Eclipse or from the command line, I see it fail with the following stacktrace:
org.gradle.api.GradleException: Build aborted because of an internal error.
at nebula.test.functional.internal.DefaultExecutionResult.rethrowFailure(DefaultExecutionResult.groovy:95)
at nebula.test.IntegrationSpec.runTasksSuccessfully(IntegrationSpec.groovy:234)
at com.att.opnfv.yang.gradle.YangPluginIntegSpec.simple(YangPluginIntegSpec.groovy:14)
Caused by: org.gradle.tooling.GradleConnectionException: Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-2.3-bin.zip'.
at org.gradle.tooling.internal.consumer.DistributionFactory$ZippedDistribution$1.call(DistributionFactory.java:128)
at org.gradle.tooling.internal.consumer.DistributionFactory$ZippedDistribution$1.call(DistributionFactory.java:116)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
at org.gradle.tooling.internal.consumer.DefaultBuildLauncher.run(DefaultBuildLauncher.java:71)
at nebula.test.functional.internal.toolingapi.BuildLauncherBackedGradleHandle.run(BuildLauncherBackedGradleHandle.groovy:78)
at nebula.test.IntegrationSpec.runTasks(IntegrationSpec.groovy:246)
at nebula.test.IntegrationSpec.runTasksSuccessfully(IntegrationSpec.groovy:232)
... 1 more
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618)
at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:160)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:275)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:371)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1300)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at org.gradle.wrapper.Download.downloadInternal(Download.java:58)
at org.gradle.wrapper.Download.download(Download.java:44)
at org.gradle.tooling.internal.consumer.DistributionFactory$ProgressReportingDownload.download(DistributionFactory.java:177)
at org.gradle.wrapper.Install$1.call(Install.java:59)
at org.gradle.wrapper.Install$1.call(Install.java:46)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
at org.gradle.wrapper.Install.createDist(Install.java:46)
at org.gradle.tooling.internal.consumer.DistributionFactory$ZippedDistribution$1.call(DistributionFactory.java:122)
at org.gradle.tooling.internal.consumer.DistributionFactory$ZippedDistribution$1.call(DistributionFactory.java:116)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
I imagine that most people will immediately suggest that I should configure my proxy. I'm pretty sure I've already done that. My Gradle build wouldn't work at all if I wasn't able to download artifacts from the internet. I put the relevant proxy config settings in my "~/.gradle/gradle.properties". I can also download this zip file in my browser, and I can also get it with "wget" from the same shell I ran the build from. The result from "wget" is interesting, however. When I run this, I see that it gets an intermediate "301 Moved Permanently" result, which points to "https://downloads.gradle.org/distributions/gradle-2.3-bin.zip".
Is there some part of this distribution download process that doesn't properly handle 301s, or do I have to configure that somehow?
Update:
Here's my build.gradle file:
buildscript {
repositories {
jcenter()
mavenCentral()
}
}
apply plugin: 'groovy'
apply plugin: 'java-gradle-plugin'
apply plugin: 'maven'
repositories {
mavenCentral()
jcenter()
maven { url "http://oss.sonatype.org/content/repositories/releases/" }
maven {
url "http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot"
}
maven {
url "http://nexus.opendaylight.org/content/repositories/opendaylight.release"
}
}
dependencies {
compile "org.codehaus.groovy:groovy-all:2.3.9"
compile gradleApi()
}
sourceCompatibility = 1.7
group = 'com.att.opnfv.yang'
version = '1.0.0-SNAPSHOT'
sourceSets {
integTest {
groovy.srcDir file("src/integTest/groovy")
resources.srcDir file("src/integTest/resources")
}
}
dependencies {
integTestCompile sourceSets.main.output
integTestCompile configurations.testCompile
integTestCompile sourceSets.test.output
integTestRuntime configurations.testRuntime
testCompile( 'com.netflix.nebula:nebula-test:2.2.0' ) {
exclude module: 'groovy-all'
}
}
task integTest(type: Test) {
testClassesDir = sourceSets.integTest.output.classesDir
classpath = sourceSets.integTest.runtimeClasspath
}
check.dependsOn -= integTest
And here's the first incomplete spec I'm trying to use with nebula test:
import nebula.test.IntegrationSpec
import nebula.test.functional.ExecutionResult
class YangPluginIntegSpec extends IntegrationSpec {
def 'simple'() {
writeHelloWorld("com.example")
buildFile << '''
applyPlugin('yang')
'''.stripIndent()
when:
ExecutionResult result = runTasksSuccessfully('build')
then:
println result
}
}