redhat-developer / redhat-developer/vscode-java

"Attempted to endRule: null, does not match most recent begin: R/" during "Classpath Update Job"

未关闭
#3,635 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

主要语言
TypeScript
星标
2.3k
派生
546
平均合并
20 小时 1 分钟
30 天内合并 PR
11

描述

I have a project with the following structure:

portal-back/
├── portal
├── portal-commons
├── portal-gateway
├── portal-integration
├── portal-liquibase
├── portal-sync

All projects (portal, portal-commons, portal-gateway, etc) are java-applications which uses Gradle (with wrapper) as a build tool. All projects have written and compiled in Java 11, uses Gradle 6.1, except portal-commons which uses Gradle 5.2.1. All projects except portal-commons and portal-liquibase are Spring Boot applications.

I have been working on this project quite a while in VSCode, everything worked, but couple days ago this stopped working. The problem is that VSCode recognized only portal and portal-commons projects. I have done "Clean Workspace" and "Clean Java Language Server Workspace", moreover I have re-cloned the project in another directory and opened it again. Nothing helps. I think this happed due to extension update or something else but couldn't figure it out.

Environment
  • Operating System: MacOS Big Sur 11.7.10
  • JDK version: 11
  • Visual Studio Code version: 1.88.1
  • Java extension version: 1.30.0

java.jdt.ls.java.home is set to Java 17, java.import.gradle.java.home is set to Java 11.

Error message from Java Language Server Logs:

[Error - 16:25:34] 29 апр. 2024 г., 16:25:34 An internal error occurred during: "Classpath Update Job".
Attempted to endRule: null, does not match most recent begin: R/.  See log for trace information if rule tracing is enabled.
java.lang.IllegalArgumentException: Attempted to endRule: null, does not match most recent begin: R/.  See log for trace information if rule tracing is enabled.
    at org.eclipse.core.runtime.Assert.isLegal(Assert.java:68)
    at org.eclipse.core.internal.jobs.ThreadJob.illegalPop(ThreadJob.java:126)
    at org.eclipse.core.internal.jobs.ThreadJob.pop(ThreadJob.java:391)
    at org.eclipse.core.internal.jobs.ImplicitJobs.end(ImplicitJobs.java:118)
    at org.eclipse.core.internal.jobs.JobManager.endRule(JobManager.java:795)
    at org.eclipse.core.internal.resources.WorkManager.checkOut(WorkManager.java:174)
    at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1598)
    at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:50)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

My VSCode workspace params:

{
    "processId": 15418,
    "clientInfo": {
        "name": "Visual Studio Code",
        "version": "1.88.1"
    },
    "locale": "en",
    "rootPath": "/Users/savenkodenys/projects/isna/portal-back",
    "rootUri": "file:///Users/savenkodenys/projects/isna/portal-back",
    "initializationOptions": {
        "bundles": [
            "/Users/savenkodenys/.vscode/extensions/visualstudioexptteam.vscodeintellicode-1.3.1/dist/com.microsoft.jdtls.intellicode.core-0.7.1.jar",
            "/Users/savenkodenys/.vscode/extensions/vmware.vscode-spring-boot-1.53.0/jars/io.projectreactor.reactor-core.jar",
            "/Users/savenkodenys/.vscode/extensions/vmware.vscode-spring-boot-1.53.0/jars/org.reactivestreams.reactive-streams.jar",
            "/Users/savenkodenys/.vscode/extensions/vmware.vscode-spring-boot-1.53.0/jars/jdt-ls-commons.jar",
            "/Users/savenkodenys/.vscode/extensions/vmware.vscode-spring-boot-1.53.0/jars/jdt-ls-extension.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-gradle-3.13.5/server/com.microsoft.gradle.bs.importer-0.2.0.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-debug-0.57.0/server/com.microsoft.java.debug.plugin-0.52.0.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-dependency-0.23.6/server/com.microsoft.jdtls.ext.core-0.23.6.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-jupiter-api_5.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-jupiter-engine_5.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-jupiter-migrationsupport_5.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-jupiter-params_5.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-platform-commons_1.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-platform-engine_1.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-platform-launcher_1.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-platform-runner_1.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-platform-suite-api_1.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-platform-suite-commons_1.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-platform-suite-engine_1.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/junit-vintage-engine_5.9.3.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/org.apiguardian.api_1.1.2.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/org.eclipse.jdt.junit4.runtime_1.3.0.v20220609-1843.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/org.eclipse.jdt.junit5.runtime_1.1.100.v20220907-0450.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/org.opentest4j_1.2.0.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/org.jacoco.core_0.8.12.202403310830.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-java-test-0.41.1/server/com.microsoft.java.test.plugin-0.41.1.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-lombok-1.1.0/plugins/com.microsoft.java.lombok-0.1.0.jar",
            "/Users/savenkodenys/.vscode/extensions/vscjava.vscode-maven-0.44.0/jdtls.ext/com.microsoft.java.maven.plugin/target/com.microsoft.java.maven.plugin-0.39.0.jar"
        ],
        "workspaceFolders": [
            "file:///Users/savenkodenys/projects/isna/portal-back"
        ],
        "settings": {
            "java": {
                "home": "/Users/savenkodenys/apps/jdk-17.0.5/Contents/Home",
                "jdt": {
                    "ls": {
                        "java": {
                            "home": "/Users/savenkodenys/apps/jdk-17.0.5/Contents/Home"
                        },
                        "vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx1G -Xms100m -javaagent:\"/Users/savenkodenys/.vscode/extensions/gabrielbb.vscode-lombok-1.0.1/server/lombok.jar\"",
                        "lombokSupport": {
                            "enabled": true
                        },
                        "protobufSupport": {
                            "enabled": true
                        },
                        "androidSupport": {
                            "enabled": false
                        }
                    }
                },
                "server": {
                    "launchMode": "Hybrid"
                },
                "configuration": {
                    "workspaceCacheLimit": 90,
                    "updateBuildConfiguration": "automatic",
                    "checkProjectSettingsExclusions": false,
                    "maven": {
                        "userSettings": null,
                        "globalSettings": null,
                        "notCoveredPluginExecutionSeverity": "warning",
                        "defaultMojoExecutionAction": "ignore",
                        "lifecycleMappings": null
                    },
                    "runtimes": [
                        {
                            "name": "JavaSE-11",
                            "path": "/Users/savenkodenys/apps/jdk-11.0.2/Contents/Home"
                        },
                        {
                            "name": "JavaSE-13",
                            "path": "/Users/savenkodenys/Library/Java/JavaVirtualMachines/azul-13.0.14/Contents/Home"
                        }
                    ],
                    "detectJdksAtStart": true
                },
                "sharedIndexes": {
                    "enabled": "auto",
                    "location": ""
                },
                "trace": {
                    "server": "verbose"
                },
                "import": {
                    "projectSelection": "automatic",
                    "exclusions": [
                        "**/node_modules/**",
                        "**/.metadata/**",
                        "**/archetype-resources/**",
                        "**/META-INF/maven/**"
                    ],
                    "generatesMetadataFilesAtProjectRoot": false,
                    "maven": {
                        "enabled": true,
                        "offline": {
                            "enabled": false
                        },
                        "disableTestClasspathFlag": false
                    },
                    "gradle": {
                        "enabled": true,
                        "wrapper": {
                            "enabled": true
                        },
                        "version": null,
                        "home": null,
                        "java": {
                            "home": "/Users/savenkodenys/apps/jdk-11.0.2/Contents/Home"
                        },
                        "user": {
                            "home": null
                        },
                        "offline": {
                            "enabled": false
                        },
                        "arguments": null,
                        "jvmArguments": null,
                        "annotationProcessing": {
                            "enabled": true
                        }
                    }
                },
                "project": {
                    "resourceFilters": [
                        "node_modules",
                        "\\.git"
                    ],
                    "importOnFirstTimeStartup": "automatic",
                    "importHint": true,
                    "encoding": "ignore",
                    "referencedLibraries": [
                        "lib/**/*.jar"
                    ],
                    "exportJar": {
                        "targetPath": "${workspaceFolder}/${workspaceFolderBasename}.jar"
                    },
                    "explorer": {
                        "showNonJavaResources": true
                    }
                },
                "showBuildStatusOnStart": {
                    "enabled": "notification"
                },
                "maven": {
                    "downloadSources": false,
                    "updateSnapshots": false
                },
                "imports": {
                    "gradle": {
                        "wrapper": {
                            "checksums": []
                        }
                    }
                },
                "autobuild": {
                    "enabled": true
                },
                "maxConcurrentBuilds": 1,
                "settings": {
                    "url": null
                },
                "compile": {
                    "nullAnalysis": {
                        "nonnull": [
                            "javax.annotation.Nonnull",
                            "org.eclipse.jdt.annotation.NonNull",
                            "org.springframework.lang.NonNull"
                        ],
                        "nullable": [
                            "javax.annotation.Nullable",
                            "org.eclipse.jdt.annotation.Nullable",
                            "org.springframework.lang.Nullable"
                        ],
                        "nonnullbydefault": [
                            "javax.annotation.ParametersAreNonnullByDefault",
                            "org.eclipse.jdt.annotation.NonNullByDefault",
                            "org.springframework.lang.NonNullApi"
                        ],
                        "mode": "automatic"
                    }
                },
                "errors": {
                    "incompleteClasspath": {
                        "severity": "warning"
                    }
                },
                "format": {
                    "enabled": true,
                    "settings": {
                        "url": null,
                        "profile": null
                    },
                    "comments": {
                        "enabled": true
                    },
                    "onType": {
                        "enabled": true
                    },
                    "insertSpaces": true,
                    "tabSize": 4
                },
                "completion": {
                    "enabled": true,
                    "postfix": {
                        "enabled": true
                    },
                    "chain": {
                        "enabled": false
                    },
                    "favoriteStaticMembers": [
                        "org.junit.Assert.*",
                        "org.junit.Assume.*",
                        "org.junit.jupiter.api.Assertions.*",
                        "org.junit.jupiter.api.Assumptions.*",
                        "org.junit.jupiter.api.DynamicContainer.*",
                        "org.junit.jupiter.api.DynamicTest.*",
                        "org.mockito.Mockito.*",
                        "org.mockito.ArgumentMatchers.*",
                        "org.mockito.Answers.*"
                    ],
                    "filteredTypes": [
                        "java.awt.*",
                        "com.sun.*",
                        "sun.*",
                        "jdk.*",
                        "org.graalvm.*",
                        "io.micrometer.shaded.*"
                    ],
                    "guessMethodArguments": "insertBestGuessedArguments",
                    "matchCase": "firstLetter",
                    "importOrder": [
                        "#",
                        "java",
                        "javax",
                        "org",
                        "com",
                        ""
                    ],
                    "lazyResolveTextEdit": {
                        "enabled": true
                    },
                    "maxResults": 0,
                    "collapseCompletionItems": false
                },
                "signatureHelp": {
                    "enabled": true,
                    "description": {
                        "enabled": false
                    }
                },
                "templates": {
                    "fileHeader": [],
                    "typeComment": []
                },
                "codeGeneration": {
                    "insertionLocation": "afterCursor",
                    "addFinalForNewDeclaration": "none",
                    "hashCodeEquals": {
                        "useJava7Objects": true,
                        "useInstanceof": true
                    },
                    "useBlocks": false,
                    "generateComments": false,
                    "toString": {
                        "template": "${object.className} [${member.name()}=${member.value}, ${otherMembers}]",
                        "codeStyle": "STRING_CONCATENATION",
                        "skipNullValues": false,
                        "listArrayContents": true,
                        "limitElements": 0
                    }
                },
                "edit": {
                    "smartSemicolonDetection": {
                        "enabled": false
                    },
                    "validateAllOpenBuffersOnChanges": false
                },
                "cleanup": {
                    "actions": [
                        "renameFileToType"
                    ],
                    "actionsOnSave": []
                },
                "saveActions": {
                    "cleanup": true,
                    "organizeImports": false
                },
                "sources": {
                    "organizeImports": {
                        "starThreshold": 99,
                        "staticStarThreshold": 99
                    }
                },
                "quickfix": {
                    "showAt": "line"
                },
                "codeAction": {
                    "sortMembers": {
                        "avoidVolatileChanges": true
                    }
                },
                "refactoring": {
                    "extract": {
                        "interface": {
                            "replace": true
                        }
                    }
                },
                "referencesCodeLens": {
                    "enabled": false
                },
                "implementationsCodeLens": {
                    "enabled": false
                },
                "references": {
                    "includeAccessors": true,
                    "includeDecompiledSources": true
                },
                "symbols": {
                    "includeSourceMethodDeclarations": false
                },
                "typeHierarchy": {
                    "lazyLoad": false
                },
                "inlayHints": {
                    "parameterNames": {
                        "enabled": "literals",
                        "exclusions": []
                    }
                },
                "eclipse": {
                    "downloadSources": false
                },
                "contentProvider": {
                    "preferred": null
                },
                "foldingRange": {
                    "enabled": true
                },
                "selectionRange": {
                    "enabled": true
                },
                "editor": {
                    "reloadChangedSources": "ask"
                },
                "code": {
                    "generators": {
                        "includeFluentWithSettersGetters": false,
                        "fluentMethodPrefix": "",
                        "methodOpeningBraceOnNewLine": false,
                        "generateEvenIfExists": false,
                        "onlyIdForHashAndEquals": false,
                        "onlyPrimitiveForToString": false,
                        "copyJsonPropertyAnnotationsFromVariablesToSettersGetters": false,
                        "includeGeneratedAnnotation": false,
                        "fluentCallsNormalSetters": true,
                        "includeBeta": false
                    }
                },
                "gradle": {
                    "buildServer": {
                        "enabled": "on",
                        "openBuildOutput": "openOnBuildFailure"
                    }
                },
                "debug": {
                    "logLevel": "warn",
                    "settings": {
                        "showHex": false,
                        "showStaticVariables": false,
                        "showQualifiedNames": false,
                        "showLogicalStructure": true,
                        "showToString": true,
                        "maxStringLength": 0,
                        "numericPrecision": 0,
                        "hotCodeReplace": "manual",
                        "enableRunDebugCodeLens": true,
                        "forceBuildBeforeLaunch": true,
                        "onBuildFailureProceed": false,
                        "console": "integratedTerminal",
                        "exceptionBreakpoint": {
                            "exceptionTypes": [],
                            "allowClasses": [],
                            "skipClasses": []
                        },
                        "stepping": {
                            "skipClasses": [],
                            "skipSynthetics": false,
                            "skipStaticInitializers": false,
                            "skipConstructors": false
                        },
                        "jdwp": {
                            "limitOfVariablesPerJdwpRequest": 100,
                            "requestTimeout": 3000,
                            "async": "auto"
                        },
                        "vmArgs": "",
                        "debugSupportOnDecompiledSource": "on"
                    }
                },
                "silentNotification": false,
                "dependency": {
                    "showMembers": false,
                    "syncWithFolderExplorer": true,
                    "autoRefresh": true,
                    "refreshDelay": 2000,
                    "packagePresentation": "hierarchical"
                },
                "help": {
                    "firstView": "auto",
                    "showReleaseNotes": true,
                    "collectErrorLog": false
                },
                "test": {
                    "defaultConfig": "",
                    "config": {}
                },
                "telemetry": {
                    "enabled": null
                }
            }
        }
    },
    "trace": "verbose",
    "workspaceFolders": [
        {
            "uri": "file:///Users/savenkodenys/projects/isna/portal-back",
            "name": "portal-back"
        }
    ]
}
Current Result

VSCode doesn't load all nested Java-projects. If I open projects separately, for example, portal I got java.lang.ClassNotFoundException: portal.commons.support.LangKeyHandlerMethodArgumentResolver at runtime (class from portal-commons).

Снимок экрана 2024-04-29 в 17 13 30

Expected Result

VSCode loads all nested Java-projects

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

从显示 Classpath Update Job 失败和多项目 Gradle 工作区配置的 Java Language Server 日志开始。使用列出的 Java、Gradle、VS Code 和扩展版本重现导入,然后比较失败前后的项目识别情况。当工作区能够在没有 endRule 错误的情况下导入所有列出的项目时,即表示完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
java, vscode
领域
build-system, developer-experience, tooling
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
需要澄清
新手友好度
25/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。