redhat-developer / redhat-developer/vscode-java

Java Model Exception: Java Model Status [src/main/java/suddenly.in.dot.notation [in some-maven-submodule] is not on its project's build path]

オープン
#588 コメント 12 件 リアクション 2 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

classpath ls-error/crash
主要言語
TypeScript
スター
2.3k
フォーク
546
平均マージ
20時間 1分
マージ済み PR(30日)
11

説明

I have a maven project, with 5 submodules, nothing too special, Spring Boot 2, Lombok, AWS SDK. Project builds fine, ie, I can mvn test/compile/package/install to hearts' delight.

When I open this project in VS Code, I get the following errors (many of them, see also attached log):

!ENTRY org.eclipse.jdt.ls.core 4 0 2018-07-11 18:14:02.128
!MESSAGE Failed to publish diagnostics.
!STACK 1
Java Model Exception: Java Model Status [src/main/java/this.in.dot.notation.why [in aesop-dfp] is not on its project's build path]
	at org.eclipse.jdt.internal.core.JavaElement.newJavaModelException(JavaElement.java:580)
	at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:253)
	at org.eclipse.jdt.internal.core.Openable.openAncestors(Openable.java:527)
	at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:247)
	at org.eclipse.jdt.internal.core.Openable.openAncestors(Openable.java:527)
	at org.eclipse.jdt.internal.core.CompilationUnit.openAncestors(CompilationUnit.java:1240)
	at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:247)
	at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:593)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:323)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:309)
	at org.eclipse.jdt.internal.core.Openable.getBuffer(Openable.java:295)
	at org.eclipse.jdt.ls.core.internal.handlers.BuildWorkspaceHandler.publishDiagnostics(BuildWorkspaceHandler.java:112)
	at org.eclipse.jdt.ls.core.internal.handlers.BuildWorkspaceHandler.buildWorkspace(BuildWorkspaceHandler.java:65)
	at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$21(JDTLanguageServer.java:672)
	at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$22(JDTLanguageServer.java:716)
	at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602)
	at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
	at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:443)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
!SUBENTRY 1 org.eclipse.jdt.core 4 1006 2018-07-11 18:14:02.132
!MESSAGE src/main/java/this.in.dot.notation.why [in aesop-dfp] is not on its project's build path

Note: I changed the package name.

Environment
  • Operating System: Windows 10 x64
  • JDK version: OpenJDK 8 r163 x64
  • Visual Studio Code version: 1.25.0
  • Java extension version: 0.28.0
Steps To Reproduce
  1. Open Maven project in VS code
  2. Open log file (see attached)

jdt-ls.log

Current Result

Code completion doesn't work.

Expected Result

Code completion works.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

添付された jdt-ls.log から始め、BuildWorkspaceHandler.publishDiagnostics/buildWorkspace と JDTLanguageServer を通して stack trace を追ってください。issue に記載された 5 つのサブモジュールを持つ Maven プロジェクトのセットアップを再現し、その後、workspace diagnostics で Java ソースが build path の外にあると報告されなくなり、コード補完が機能することを確認してください。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java, vscode
領域
developer-experience, tooling
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。