【问题标题】:How to add referenced library JAR files using relative path for eclipse Java project in vscode如何在 vscode 中使用 Eclipse Java 项目的相对路径添加引用的库 JAR 文件
【发布时间】:2021-11-11 21:31:49
【问题描述】:

我查看了这个question 和许多其他帖子来帮助我解决我的问题,但没有任何效果。

我试图在 vscode 中从 Eclipse 打开一个现有的 Java 项目。该项目在 Eclipse 2021-06 中成功打开,我通过选择 lib/ 文件夹下的 JAR 库并右键单击 - 配置构建批处理 - 添加选择添加到构建路径来修复引用的库。然后文件.classpath 自动更新。然后我必须下载 Java 项目所需的 JDK 11(vscode 需要)和 JDK 1.8。我设法与eclipse一起正确设置JDK并且一切正常。我能够编译项目,导出结果 JAR 并进行部署,一切正常。

我无法使用Open Java Project 选项在 vscode 中打开此项目。我在为这个 Java 项目添加引用库时遇到问题,因为它是一个托管项目(因为它是在 Eclipse 中创建的)。当我尝试使用 vscode UI 添加库时,我得到的结果好坏参半,有时它不起作用并且构建失败。我很惊讶,因为在某些情况下,事情只是奏效,然后却没有。

我尝试在 vscode 中更新 .classpath 文件,但问题仍然相同。当我尝试通过单击+ 在vscode 中的JAVA PROJECTS 树下添加Referenced Libraries (Read Only) 中的库时,它没有任何效果。此步骤将修改.vscode文件夹下的文件settings.json,将相关值添加到属性"java.project.referencedLibraries"中。

我对如何在 vscode 中配置 Java 项目的引用库感到困惑。以下是问题摘要:

  1. 如何使用基于项目根文件夹的 Java 项目的相对路径添加库?
  2. 使用.classpath 文件添加库和修改settings.json 文件有什么区别?哪一个会赢?
  3. 如何将包含所有 JAR 文件的文件夹添加为 Java 项目的引用库?这是为了避免一次添加一个文件。
  4. 为什么 .classpath.project 文件没有显示在 vscode 资源管理器视图中?它只会在您从 Windows 文件资源管理器中打开 vscode 文件时显示。
  5. 我找到了命令Configure Classpath,但它是只读的,我认为它与.classpath 文件相同。有没有办法从 vscode UI 改变它?
  6. 当我删除.classpath 文件或从.classpath 文件中删除classpathentry 行时,vscode 视图中JAVA PROJECTS 下的节点“引用库(只读)”被删除。为什么?

有关详细信息,请参阅下面的快照。

感谢您的帮助。

【问题讨论】:

  • 因为你有很多库。我强烈建议您使用 maven 或 gradle。即使你现在解决这个问题,它也不会与其他 ide 和其他团队成员兼容。
  • 我现在不能这样做,因为该项目是针对已部署到生产环境的 Java Bean,现在走这条路不是一个选择,尤其是我不是这个的所有者项目。我必须使用我拥有的项目来解决问题。
  • 您的问题解决了吗?我想知道你是否得到了我的答案?
  • @MollyWang-MSFT 我感激不尽。你的回答对我帮助很大。我终于想出了如何解决我的问题,但无法找出根本原因。很好……这就是计算机科学领域的情况……那就是从来没有科学……我会很快更新这篇文章。请多多包涵!
  • @Hemang 看来我必须将项目转换为 Maven。如果可以的话,我需要你的帮助。在此处查看新问题:stackoverflow.com/questions/69382705/…

标签: java eclipse visual-studio-code jar reference-library


【解决方案1】:

基本上,java 扩展从 Referenced Libraries 中查找 jar。

以下是我对您问题的回答:

  1. 右键单击 jar 并选择 copy relative path 然后将其添加到设置中,单击刷新按钮然后添加的 jar 应显示在选项 Referenced Libraries 下:

  2. CLASSPATH 变量是告诉应用程序(包括 JDK 工具)到哪里查找用户类的一种方式。在添加 jar 时,设置java.project.referencedLibraries 胜出。

  3. 无法选择 jar 文件夹,但您可以使用键盘快捷键选择所有 jar,然后添加它们。

  4. 有一个名为"java.configuration.checkProjectSettingsExclusions"的设置,默认为true,所以.project.classpath不会在VS Code中显示。

  5. Java:Configure Classpath命令在我的机器上运行,可以自定义当前项目。

  6. 我的猜测是当你打开一个新项目时,vscode弹出一个窗口询问你是否信任它,你选择Not,那么项目是只读的。 Trusting the workspace 然后再次尝试命令 Java: Configure Classpath,它应该是可写的。

【讨论】:

  • 嗨,莫莉,这里有一些附加信息: - 支持添加文件夹,例如,如果您在 Windows 上按 alt,您会看到加号图标变为文件夹按钮。 - 仅非托管文件夹项目支持引用库功能。如果用户在该节点上看到(只读),则它不可用
  • @ShengChen。知道了。感谢您的回复。
【解决方案2】:

@Molly Want-MSFT 的回答对我帮助很大。以下是我为永久解决问题所做的工作。我多次应用以下步骤来验证它们每次都能正常工作。

在 Eclipse 和 vscode 中打开 Java 项目的步骤:

  1. 下载 vscode、Eclipse 和您的 Java 项目所需的 JDK。

  2. 在 Eclipse 中导入项目并为工作区和项目设置 JDK。另外,请确保设置编译级别以匹配 JDK。

  3. 设置项目 JDK 以匹配工作区的默认值。

  4. 构建项目(Project-Cleanup)并导出 JAR 以确保一切正常。

  5. 现在在 vscode 中打开项目。

  6. 在“设置”、“用户”和“工作区”部分中设置 java.home。这必须是 JDK-11 或更高版本才能允许 vscode 为 Java 项目正常运行。

  7. "java.configuration.runtimes" 部分下的用户settings.json 中添加对已安装JDK 的引用。

  8. 重启 vscode 并从JAVA PROJECTS 视图中选择Configure Java Runtime。确保检测到 Java 项目的 JDK 并正常工作。

  9. 您可能必须打开其中一个 Java 源代码文件。稍等片刻,直到它安定下来。单击右下角的旋转图标检查 Java 构建状态进度。此图标用于Language Server,在构建/编译完成后,它将变成一个看起来像竖起大拇指的图标。

  10. 关闭再打开Configure Java Runtime,验证vscode检测到JDK。

  11. 确保JAVA PROJECTS 视图下的JRE System LibrariesReferenced Libraries 均可见且没有任何错误。检查问题视图并尝试解决所有错误。

  12. Referenced Libraries 应该是Read Only,因为这个项目是在 Eclipse 中设置的。您可以删除.classpath.project 文件并在vscode 中再次打开项目,并尝试通过使用+ 按钮添加库来解决问题。删除此类文件后,项目将变为Unmanaged。稍后,您可以恢复此类文件。

当项目为unmanaged时,从JAVA PROJECTS视图中使用Configure Java Runtime,可以查看项目类型。您可以根据用户setting.json 中的"java.configuration.runtimes" 部分将JDK 更改为已安装的JDK 之一。

  1. 如果Referenced Libraries是只读的,即使你可以在settings.json中添加库也不起作用,但.classpath文件会赢。

  2. JAVA PROJECTS 视图,您可以使用选项Build WorkspaceClean Workspace 进行故障排除并尝试解决错误。

  3. 最后,您可以从JAVA PROJECTS 视图上的选项中Export JAR。这个选项不清楚,看起来和箭头指向右边|-->

希望对您有所帮助,如果您有任何问题,请发表评论,我会尽可能回复。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 2017-08-19
相关资源
最近更新 更多