microsoft / vscode-java-test

Run and debug Java test cases in Visual Studio Code.
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-test
Other
297 stars 129 forks source link

"Run Test with coverage" doesn't work: "Could not find or load main class" #1714

Open LeonardoBevilacqua opened 3 months ago

LeonardoBevilacqua commented 3 months ago

Coverage testing isn't working for me. When I run with coverage, the progress monitor spins indefinitely and no coverage information is provided. The test results are displayed correctly if I run without coverage.

I'm seeing the following error in the extension host logs:

Error: Could not find or load main class \-javaagent:c:\\\\Users\\\\myusername\\\\.vscode\\\\extensions\\\\vscjava.vscode-java-test-0.41.1\\\\server\\\\jacocoagent.jar=destfile=c:\\\\Users\\\\myusername\\\\AppData\\\\Roaming\\\\Code\\\\User\\\\workspaceStorage\\\\df684810f26c0547aff1b945ce0cc0fc\\\\vscjava.vscode-java-test\\\\my-project\\\\coverage\\\\jacoco.exec\\ Caused by: java.lang.ClassNotFoundException: \-javaagent:c:\\\\Users\\\\myusername\\\\.vscode\\\\extensions\\\\vscjava.vscode-java-test-0.41.1\\\\server\\\\jacocoagent.jar=destfile=c:\\\\Users\\\\myusername\\\\AppData\\\\Roaming\\\\Code\\\\User\\\\workspaceStorage\\\\df684810f26c0547aff1b945ce0cc0fc\\\\vscjava.vscode-java-test\\\\my-project\\\\coverage\\\\jacoco.exec\\

vscode-java-test Extension version: 0.41.1 VS Code Version: Version: 1.91.1 Commit: f1e16e1e6214d7c44d078b1f0607b2388f29d729 Electron: 29.4.0 ElectronBuildId: 9728852 Chromium: 122.0.6261.156 Node.js: 20.9.0 V8: 12.2.281.27-electron.0 OS: Windows_NT x64 10.0.19045

jdneo commented 3 months ago

Is there any error log in the server log? (Trigger Java: Open Java Language Server Log File)

Is it possible to share a sample project to us?

LeonardoBevilacqua commented 3 months ago

Here is the log

!ENTRY org.eclipse.jdt.ls.core 4 2 2024-07-25 09:13:51.207
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jdt.ls.core".
!STACK 0
java.io.FileNotFoundException: c:\Users\myusername\AppData\Roaming\Code\User\workspaceStorage\df684810f26c0547aff1b945ce0cc0fc\vscjava.vscode-java-test\my-project\coverage\jacoco.exec (The system cannot find the path specified)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(Unknown Source)
    at java.base/java.io.FileInputStream.<init>(Unknown Source)
    at org.jacoco.core.tools.ExecFileLoader.load(ExecFileLoader.java:72)
    at com.microsoft.java.test.plugin.coverage.CoverageHandler.getCoverageDetail(CoverageHandler.java:82)
    at com.microsoft.java.test.plugin.handler.TestDelegateCommandHandler.executeCommand(TestDelegateCommandHandler.java:85)
    at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceExecuteCommandHandler$1.run(WorkspaceExecuteCommandHandler.java:230)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
    at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceExecuteCommandHandler.executeCommand(WorkspaceExecuteCommandHandler.java:220)
    at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$4(JDTLanguageServer.java:604)
    at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
    at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
    at java.base/java.util.concurrent.CompletableFuture$Completion.exec(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

!ENTRY org.eclipse.jdt.ls.core 4 0 2024-07-25 09:13:51.208
!MESSAGE Error in calling delegate command handler
!STACK 0
java.io.FileNotFoundException: c:\Users\myusername\AppData\Roaming\Code\User\workspaceStorage\df684810f26c0547aff1b945ce0cc0fc\vscjava.vscode-java-test\my-project\coverage\jacoco.exec (The system cannot find the path specified)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(Unknown Source)
    at java.base/java.io.FileInputStream.<init>(Unknown Source)
    at org.jacoco.core.tools.ExecFileLoader.load(ExecFileLoader.java:72)
    at com.microsoft.java.test.plugin.coverage.CoverageHandler.getCoverageDetail(CoverageHandler.java:82)
    at com.microsoft.java.test.plugin.handler.TestDelegateCommandHandler.executeCommand(TestDelegateCommandHandler.java:85)
    at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceExecuteCommandHandler$1.run(WorkspaceExecuteCommandHandler.java:230)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
    at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceExecuteCommandHandler.executeCommand(WorkspaceExecuteCommandHandler.java:220)
    at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$4(JDTLanguageServer.java:604)
    at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
    at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
    at java.base/java.util.concurrent.CompletableFuture$Completion.exec(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

unfortunately, I cannot share a sample of the project.

Additional notes: I used to run the code in another IDE without any problem, recently tried in VSCode with the JAVA Pack extension. Everything worked fine out of the box, running, debugging and testing without issues, only the coverage action doesn't work, but I can run the mvn command to generate the report.

jdneo commented 2 months ago

@LeonardoBevilacqua Is this still a problem in 0.42.0?

LeonardoBevilacqua commented 2 months ago

Yes, the still a problem

jdneo commented 2 months ago

What's the jacoco version used in your project?

jdneo commented 2 months ago

I'm guessing that this might be caused by the version of jacoco agent of the project is different from the embedded one in extension.

In https://github.com/microsoft/vscode-java-test/pull/1723, I changed to implementation that using the one from project if it's available.

Would you mind trying the pre-release 0.42.2024080609 and let me know if the issue is fixed or not?

LeonardoBevilacqua commented 2 months ago

I've tried the pre-release version, still does not work. I believe the jacoco version is 0.8.10, (not managed by my current project)

Edit: I tried with 2 projects, both with the same issue

LoveraSantiago commented 1 month ago

Hello. I was facing this problem too. As recomended by @jdneo I've tried the pre-release 0.42.2024080609 and the problem still persist.

Here we use an internal and "non-sense" framework wich brings jacoco 0.8.8 . I've update the current project to force to bring recent version of jacoco 0.8.12.

I could find a workaround copying the jacoco.exec of the current project found it in your-current-application>target>jacoco.exec to the folder where vscode complains about ClassNotFoundException on your case "-javaagent:c:\\Users\\myusername\\.vscode\\extensions\\vscjava.vscode-java-test-0.41.1\\server\\jacocoagent.jar=destfile=c:\\Users\\myusername\\AppData\\Roaming\\Code\\User\\workspaceStorage\\df684810f26c0547aff1b945ce0cc0fc\\vscjava.vscode-java-test\\my-project\\coverage\\jacoco.exec\"

As @jdneo points out. Its something with conflict version.

Anyway thanks. I love to work with the vscode.

jdneo commented 1 month ago

@LoveraSantiago Would you mind sharing the project that having this issue?