【问题标题】: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 Libraries 和Referenced 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 Workspace 和Clean 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
相关资源
最近更新 更多