JDTLS помечает файл как файл, не относящийся к проекту, и выдает ошибки в журналах.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JDTLS помечает файл как файл, не относящийся к проекту, и выдает ошибки в журналах.

Сообщение Anonymous »

Когда я пытаюсь запустить jdtls с помощью neovim (nvim-jdtls) в проекте gradle, LSP выдает сообщение об ошибке, что не найден указанный путь jdk17, и помечает файл как файл, не относящийся к проекту.Проверка журналов lsp показывает следующее:

Код: Выделить всё

[START][2024-07-30 15:05:18] LSP logging initiated
[ERROR][2024-07-30 15:05:18] .../vim/lsp/rpc.lua:734    "rpc"   "java"  "stderr"    "WARNING: Using incubator modules: jdk.incubator.vector, jdk.incubator.foreign\r\n"
[WARN][2024-07-30 15:05:21] ...lsp/handlers.lua:537 "Jul 30, 2024, 3:05:21 PM Synchronize project app failed due to an error while importing the root project.\norg.eclipse.buildship.core.internal.GradlePluginsRuntimeException: org.eclipse.core.internal.resources.ResourceException: Invalid project description.\norg.eclipse.buildship.core.internal.ImportRootProjectException: org.eclipse.buildship.core.internal.GradlePluginsRuntimeException: org.eclipse.core.internal.resources.ResourceException: Invalid project description.\r\n\tat org.eclipse.buildship.core.internal.workspace.ImportRootProjectOperation.run(ImportRootProjectOperation.java:53)\r\n\tat org.eclipse.buildship.core.internal.DefaultGradleBuild$SynchronizeOperation.runInToolingApi(DefaultGradleBuild.java:225)\r\n\tat org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager$WorkspaceRunnableAdapter.run(DefaultToolingApiOperationManager.java:58)\r\n\tat org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313)\r\n\tat org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2338)\r\n\tat org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager.run(DefaultToolingApiOperationManager.java:39)\r\n\tat org.eclipse.buildship.core.internal.DefaultGradleBuild$SynchronizeOperation.run(DefaultGradleBuild.java:192)\r\n\tat org.eclipse.buildship.core.internal.DefaultGradleBuild.synchronize(DefaultGradleBuild.java:100)\r\n\tat org.eclipse.buildship.core.internal.DefaultGradleBuild.synchronize(DefaultGradleBuild.java:86)\r\n\tat org.eclipse.jdt.ls.core.internal.managers.GradleProjectImporter.startSynchronization(GradleProjectImporter.java:352)\r\n\tat org.eclipse.jdt.ls.core.internal.managers.GradleProjectImporter.importDir(GradleProjectImporter.java:240)\r\n\tat org.eclipse.jdt.ls.core.internal.managers.GradleProjectImporter.importToWorkspace(GradleProjectImporter.java:191)\r\n\tat org.eclipse.jdt.ls.core.internal.managers.ProjectsManager.importProjects(ProjectsManager.java:124)\r\n\tat org.eclipse.jdt.ls.core.internal.managers.ProjectsManager.initializeProjects(ProjectsManager.java:107)\r\n\tat org.eclipse.jdt.ls.core.internal.handlers.InitHandler$1.runInWorkspace(InitHandler.java:244)\r\n\tat org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:42)\r\n\tat org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)\r\nCaused by: org.eclipse.buildship.core.internal.GradlePluginsRuntimeException: org.eclipse.core.internal.resources.ResourceException: Invalid project description.\r\n\tat org.eclipse.buildship.core.internal.workspace.DefaultWorkspaceOperations.createProject(DefaultWorkspaceOperations.java:128)\r\n\tat org.eclipse.buildship.core.internal.workspace.ImportRootProjectOperation.importRootProject(ImportRootProjectOperation.java:95)\r\n\tat org.eclipse.buildship.core.internal.workspace.ImportRootProjectOperation.access$200(ImportRootProjectOperation.java:39)\r\n\tat org.eclipse.buildship.core.internal.workspace.ImportRootProjectOperation$1.run(ImportRootProjectOperation.java:68)\r\n\tat org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313)\r\n\tat org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2333)\r\n\tat org.eclipse.buildship.core.internal.workspace.ImportRootProjectOperation.runInWorkspace(ImportRootProjectOperation.java:58)\r\n\tat org.eclipse.buildship.core.internal.workspace.ImportRootProjectOperation.run(ImportRootProjectOperation.java:51)\r\n\t... 16 more\r\nCaused by: org.eclipse.core.internal.resources.ResourceException: Invalid project description.\r\n\tat org.eclipse.core.internal.resources.Project.checkDescription(Project.java:173)\r\n\tat org.eclipse.core.internal.resources.Project.assertCreateRequirements(Project.java:57)\r\n\tat org.eclipse.core.internal.resources.Project.create(Project.java:266)\r\n\tat org.eclipse.core.internal.resources.Project.create(Project.java:252)\r\n\tat org.eclipse.buildship.core.internal.workspace.DefaultWorkspaceOperations.createProject(DefaultWorkspaceOperations.java:113)\r\n\t... 23 more\r\n"
[WARN][2024-07-30 15:05:22] ...lsp/handlers.lua:137 "The language server jdtls triggers a registerCapability handler despite dynamicRegistration set to false. Report upstream, this warning is harmless"
Похоже, что LSP запускается нормально, за исключением того, что сообщает только о синтаксических ошибках. Сначала я подумал, что это может быть связано со структурой моего проекта Gradle, а именно:

Код: Выделить всё

app
└───src
├───main
│   ├───java
│   │   └───org
│   │       └───example
│   │
│   └───resources
└───test
├───java
│   └───org
│       └───example
└───resources
Где файл build.gradle находится на том же уровне, что и каталог src, но файлы проекта начинаются с пакета org.example, что может сбить с толку LSP.< /p>
Это моя конфигурация с jdtls

Код: Выделить всё

    local root_markers = {'.git', 'mvnw', 'gradlew', 'pom.xml', 'build.gradle'}
local root_dir = require('jdtls.setup').find_root(root_markers)
local workspace_folder = root_dir .. '/jdtls/'
local jdtlsconfig = {
cmd = {
'java', -- or '/path/to/java17_or_newer/bin/java'
-- depends on if `java` is in your $PATH env variable and if it points to the right version.

'-Declipse.application=org.eclipse.jdt.ls.core.id1',
'-Dosgi.bundles.defaultStartLevel=4',
'-Declipse.product=org.eclipse.jdt.ls.core.product',
'-Dlog.protocol=true',
'-Dlog.level=ALL',
'-Xmx1g',
'--add-modules=ALL-SYSTEM',
'--add-opens', 'java.base/java.util=ALL-UNNAMED',
'--add-opens', 'java.base/java.lang=ALL-UNNAMED',
'-jar', 'C:/Users/Owner/AppData/Local/eclipse-jdtls/plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar',
'-configuration', 'C:/Users/Owner/AppData/Local/eclipse-jdtls/config_win/',
'-data', workspace_folder},
root_dir = root_dir ,
settings = {
java = {
configuration = {
runtimes = {
{name = "JavaSE-17",
path = '"C:\\Program Files\\Amazon Coretto\\jdk17.0.7_7\\"'},
{name = "JavaSE-11",
path = '"C:\\Program Files\\Amazon Coretto\\jdk11.0.15_9\\"'}
}
},
import = {
gradle = {
enabled = true
}
}
}
}
}

require('jdtls').start_or_attach(jdtlsconfig)
Кроме того, в файлах проекта есть некоторые ошибки, которые требуют контекста других файлов (например, классы не наследуют все методы от своих абстрактных суперклассов), но ошибки не помечаются из-за файлы не распознаются как файлы проекта.
Как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/788 ... rs-in-logs
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»