Skip to content

NoClassDefFoundError in IntelliJ plugin while trying to generate test #1334

Closed

Description

@sirgl

Description

NoClassDefFoundError in IntelliJ plugin trying to generate test

To Reproduce

Steps to reproduce the behavior:

Example:

  1. Run the 'javaparser' project in IntelliJ Idea
  2. Create file with the content:
package com.github.javaparser;

import com.github.javaparser.ast.CompilationUnit;

public class Parser {
    ParseResult<CompilationUnit> parse(String text) {
        return new JavaParser().parse(text);
    }
}

  1. Use plugin to generate tests for Parser

Expected behavior

Tests are supposed to be generated.

Actual behavior

Exception is thrown

Visual proofs (screenshots, logs, images)

com.jetbrains.rd.util.reactive.RdFault: com/google/common/cache/CacheLoader, reason: java.lang.NoClassDefFoundError: com/google/common/cache/CacheLoader
	at soot.Scene.v(Scene.java:178)
	at org.utbot.framework.util.SootUtilsKt.addBasicClasses(SootUtils.kt:137)
	at org.utbot.framework.util.SootUtilsKt.initSoot(SootUtils.kt:89)
	at org.utbot.framework.util.SootUtilsKt.access$initSoot(SootUtils.kt:1)
	at org.utbot.framework.util.SootUtils.runSoot(SootUtils.kt:46)
	at org.utbot.framework.plugin.api.TestCaseGenerator.<init>(TestCaseGenerator.kt:88)
	at org.utbot.framework.plugin.api.TestCaseGenerator.<init>(TestCaseGenerator.kt:61)
	at org.utbot.framework.process.EngineMainKt$setup$2.invoke(EngineMain.kt:84)
	at org.utbot.framework.process.EngineMainKt$setup$2.invoke(EngineMain.kt:81)
	at org.utbot.rd.CallsSynchronizer$measureExecutionForTermination$1$1.invoke(ClientProcessUtil.kt:84)
	at org.utbot.rd.CallsSynchronizer.measureExecutionForTermination(ClientProcessUtil.kt:75)
	at org.utbot.rd.CallsSynchronizer$measureExecutionForTermination$1.invoke(ClientProcessUtil.kt:83)
	at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
	at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
	at com.jetbrains.rd.framework.impl.RdCall.onWireReceived(RdTask.kt:360)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
	at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:148)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:54)
	at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase.queue$lambda-3(SingleThreadScheduler.kt:41)
	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.lang.Thread.run(Thread.java:829)
Caused by: java.lang.ClassNotFoundException: com.google.common.cache.CacheLoader
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 24 more

	at com.jetbrains.rd.framework.RdTaskResult$Companion.read(TaskInterfaces.kt:30)
	at com.jetbrains.rd.framework.impl.CallSiteWiredRdTask.onWireReceived(RdTask.kt:104)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
	at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:148)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:54)
	at com.jetbrains.rd.framework.impl.RdCall$createResponseScheduler$1.queue$execute(RdTask.kt:278)
	at com.jetbrains.rd.framework.impl.RdCall$createResponseScheduler$1.access$queue$execute(RdTask.kt:267)
	at com.jetbrains.rd.framework.impl.RdCall$createResponseScheduler$1$queue$1.invokeSuspend(RdTask.kt:287)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
	at org.utbot.intellij.plugin.process.EngineProcess.createTestGenerator(EngineProcess.kt:190)
	at org.utbot.intellij.plugin.generator.UtTestsDialogProcessor$createTests$1$1.run(UtTestsDialogProcessor.kt:158)
	at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:442)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:114)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$5(CoreProgressManager.java:493)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:244)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:189)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:176)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:244)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
	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:829)

image


**Environment**

IntelliJ IDEA 2022.1.4 (Community Edition)
Build #IC-221.6008.13, built on July 19, 2022
Runtime version: 11.0.15+10-b2043.56 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Linux 5.15.0-50-generic
GC: G1 Young Generation, G1 Old Generation
Memory: 2048M
Cores: 20
Non-Bundled Plugins:
    org.jetbrains.kotlin (221-1.7.21-release-272-IJ5591.52)
    org.utbot.intellij.plugin.id (2022.11)

Kotlin: 221-1.7.21-release-272-IJ5591.52
Current Desktop: ubuntu:GNOME

Activity

  1. moved this to Todo in UTBot Javaon Nov 9, 2022
  2. changed the title [-]NoClassDefFoundError trying to generate test[/-] [+]NoClassDefFoundError in IntelliJ plugin trying to generate test[/+] on Nov 9, 2022
  3. changed the title [-]NoClassDefFoundError in IntelliJ plugin trying to generate test[/-] [+]NoClassDefFoundError in IntelliJ plugin while trying to generate test[/+] on Nov 9, 2022
  4. tyuldashev commented on Nov 10, 2022

    @tyuldashev
    Collaborator

    Hi, @sirgl, happy to hear you again! Does the error happen only in this javaparser project or occurs even in simple HelloWorld project?

  5. sirgl commented on Nov 10, 2022

    @sirgl
    Author

    Oh, @tyuldashev It's mutual! Actually, for simple project it works without problems, but for anything more complicated it fails. Maybe because of build system or multiple modules?
    BTW, it doesn't work for newer versions like 22.2 or 22.3 at all even for Hello World project, so I had to install older one to make it working.

  6. Domonion commented on Nov 11, 2022

    @Domonion
    Collaborator

    This issue might possibly relate to #1035.
    I cannot reproduce exact exception from the issue, but similar occurs with the following settings:

    1. Fuzzing 50-50 Concrete.
    2. 120s timeout.
    3. Sometimes needs 2-3 tries.

    Exceptions:

    Cannot save tests generation report: error occurred 'No executables found in test report, reason: java.lang.IllegalStateException: No executables found in test report at org.utbot.framework.codegen.model.constructor.tree.TestsGenerationReport.getClassUnderTest(TestsGenerationReport.kt:24) at org.utbot.framework.codegen.model.constructor.tree.TestsGenerationReport.toString(TestsGenerationReport.kt:76) at org.utbot.framework.process.EngineMainKt$setup$10.invoke(EngineMain.kt:200) at org.utbot.framework.process.EngineMainKt$setup$10.invoke(EngineMain.kt:188) at org.utbot.rd.CallsSynchronizer$measureExecutionForTermination$1$1.invoke(ClientProcessUtil.kt:84) at org.utbot.rd.CallsSynchronizer.measureExecutionForTermination(ClientProcessUtil.kt:75) at org.utbot.rd.CallsSynchronizer$measureExecutionForTermination$1.invoke(ClientProcessUtil.kt:83) at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182) at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182) at com.jetbrains.rd.framework.impl.RdCall.onWireReceived(RdTask.kt:360) at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57) at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56) at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:148) at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56) at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:54) at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase.queue$lambda-3(SingleThreadScheduler.kt:41) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833)
    

    and

    12:02:21.524 | Error | ChildProcess              | 18:Scheduler for Client62237 |  | java.lang.ClassNotFoundException: com.github.javaparser.ast.Node$$Lambda$148/0x0000000800dfa488
    	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
    	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
    	at org.utbot.instrumentation.process.HandlerClassesLoader.loadClass(ChildProcess.kt:48)
    	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    	at org.utbot.framework.plugin.api.util.IdUtilKt.getJClass(IdUtil.kt:102)
    	at org.utbot.framework.concrete.UtAssembleModelConstructorsKt.findUtAssembleModelConstructor(UtAssembleModelConstructors.kt:91)
    	at org.utbot.framework.concrete.UtModelConstructor.tryConstructUtAssembleModel(UtModelConstructor.kt:275)
    	at org.utbot.framework.concrete.UtModelConstructor.constructFromAny(UtModelConstructor.kt:266)
    	at org.utbot.framework.concrete.UtModelConstructor.construct(UtModelConstructor.kt:117)
    	at org.utbot.framework.concrete.UtModelConstructor.constructCompositeModel(UtModelConstructor.kt:314)
    	at org.utbot.framework.concrete.UtModelConstructor.constructFromAny(UtModelConstructor.kt:266)
    	at org.utbot.framework.concrete.UtModelConstructor.construct(UtModelConstructor.kt:117)
    	at org.utbot.framework.concrete.UtModelConstructor.constructCompositeModel(UtModelConstructor.kt:314)
    	at org.utbot.framework.concrete.UtModelConstructor.constructFromAny(UtModelConstructor.kt:266)
    	at org.utbot.framework.concrete.UtModelConstructor.construct(UtModelConstructor.kt:117)
    	at org.utbot.framework.concrete.UtExecutionInstrumentation$invoke$1$concreteExecutionResult$1.invoke(UtExecutionInstrumentation.kt:195)
    	at org.utbot.framework.concrete.UtExecutionInstrumentation$invoke$1$concreteExecutionResult$1.invoke(UtExecutionInstrumentation.kt:173)
    	at org.utbot.framework.concrete.UtExecutionInstrumentation.withStaticFields(UtExecutionInstrumentation.kt:320)
    	at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:173)
    	at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:116)
    	at org.utbot.instrumentation.process.ChildProcessKt$setup$2.invoke(ChildProcess.kt:125)
    	at org.utbot.instrumentation.process.ChildProcessKt$setup$2.invoke(ChildProcess.kt:121)
    	at org.utbot.rd.CallsSynchronizer$measureExecutionForTermination$1$1.invoke(ClientProcessUtil.kt:84)
    	at org.utbot.rd.CallsSynchronizer.measureExecutionForTermination(ClientProcessUtil.kt:75)
    	at org.utbot.rd.CallsSynchronizer$measureExecutionForTermination$1.invoke(ClientProcessUtil.kt:83)
    	at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
    	at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
    	at com.jetbrains.rd.framework.impl.RdCall.onWireReceived(RdTask.kt:360)
    	at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57)
    	at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
    	at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:148)
    	at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
    	at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:54)
    	at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase.queue$lambda-3(SingleThreadScheduler.kt:41)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    	at java.base/java.lang.Thread.run(Thread.java:833)
    

    If timeout >= 600s - test generates, but it contains strange results.

  7. Repository owner moved this from Todo to Done in UTBot Javaon Nov 24, 2022
  8. added this to the 2022.12 Release milestone on Nov 30, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions