redhat-developer / redhat-developer/vscode-java
Can't resolve imports on an Eclipse project
还没有人认领这个 Issue。
- 主要语言
- TypeScript
- 星标
- 2.3k
- 派生
- 546
- 平均合并
- 20 小时 1 分钟
- 30 天内合并 PR
- 11
描述
Just tried the extension on an existing eclipse project, no imports could be resolved, not even the java.lang ones:

On output console:
[Warn - 3:12:21 PM] Aug 23, 2017 3:12:15 PM While loading class "org.eclipse.m2e.core.MavenPlugin", thread "Thread[Worker-2,5,main]" timed out waiting (5154ms) for thread "Thread[pool-1-thread-1,5,main]" to finish starting bundle "org.eclipse.m2e.core_1.8.1.20170728-1531 [52]". To avoid deadlock, thread "Thread[Worker-2,5,main]" is proceeding but "org.eclipse.m2e.core.MavenPlugin" may not be fully initialized.
Unable to acquire the state change lock for the module: osgi.identity; type="osgi.bundle"; version:Version="1.8.1.20170728-1531"; osgi.identity="org.eclipse.m2e.core"; singleton:="true" [id=52] STARTED [STARTED]
org.osgi.framework.BundleException: Unable to acquire the state change lock for the module: osgi.identity; type="osgi.bundle"; version:Version="1.8.1.20170728-1531"; osgi.identity="org.eclipse.m2e.core"; singleton:="true" [id=52] STARTED [STARTED]
at org.eclipse.osgi.container.Module.lockStateChange(Module.java:337)
at org.eclipse.osgi.container.Module.start(Module.java:401)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:468)
at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:103)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:529)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:328)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:368)
at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:442)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.eclipse.jdt.ls.core.internal.managers.MavenProjectImporter.(MavenProjectImporter.java:53)
at org.eclipse.jdt.ls.core.internal.managers.ProjectsManager.importers(ProjectsManager.java:176)
at org.eclipse.jdt.ls.core.internal.managers.ProjectsManager.getImporter(ProjectsManager.java:160)
at org.eclipse.jdt.ls.core.internal.managers.ProjectsManager.initializeProjects(ProjectsManager.java:73)
at org.eclipse.jdt.ls.core.internal.handlers.InitHandler$1.run(InitHandler.java:117)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
Caused by: java.util.concurrent.TimeoutException: Timeout after waiting 5 seconds to acquire the lock.
at org.eclipse.osgi.container.Module.lockStateChange(Module.java:334)
... 18 more
On the VSCode developer tools:
/C:/Program Files (x86)/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:29 Invalid arguments: Error: Invalid arguments
at new e (c:\Program Files (x86)\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:23:230953)
at asRange (C:\Users\gabriel.barroso.vscode\extensions\redhat.java-0.8.0\node_modules\vscode-languageclient\lib\protocolConverter.js:41:16)
at asLocation (C:\Users\gabriel.barroso.vscode\extensions\redhat.java-0.8.0\node_modules\vscode-languageclient\lib\protocolConverter.js:205:59)
at item.map (C:\Users\gabriel.barroso.vscode\extensions\redhat.java-0.8.0\node_modules\vscode-languageclient\lib\protocolConverter.js:195:43)
at Array.map (native)
at asDefinitionResult (C:\Users\gabriel.barroso.vscode\extensions\redhat.java-0.8.0\node_modules\vscode-languageclient\lib\protocolConverter.js:195:25)
Environment
- Windows 10:
- JDK version 8:
- Visual Studio Code version 1.15:
- Java extension version: 0.8.0
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先,使用现有的 Eclipse 项目复现未解析 import 的行为,并检查 stack trace 中 MavenProjectImporter 和 ProjectsManager 的入口点。将语言服务器的输出与 vscode-languageclient protocolConverter.js 中的错误进行比较;当标准 import 和项目 import 能够解析,且不再出现报告的初始化或定义结果失败时,即表示完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java, vscode
- 领域
- devtools
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100