Visual Studio Code,Java 扩展,如何将 jar 添加到类路径

Posted

技术标签:

【中文标题】Visual Studio Code,Java 扩展,如何将 jar 添加到类路径【英文标题】:Visual Studio Code, Java Extension, howto add jar to classpath 【发布时间】:2018-10-18 08:14:09 【问题描述】:

在 Eclipse 中,我使用

添加了一个 jar 库

项目->构建路径->配置构建路径

VisualStudioCode 中的等价物是什么?我查看了launch.json。定义了一个类路径。向这个类路径(数组)变量添加 jar 似乎没有效果。

本质上,这是一个重复的问题 Visual Studio Java Language Support add jar 但这个问题没有答案。

这是一个非常基本的问题,我真的不明白要在 Microsoft 的文档中或通过 Google 搜索找到解决方案。

【问题讨论】:

visual studio 代码是一个文本编辑器,它不是一个 ide,因此您的系统变量(如果您在 Windows 上)将为您的 java 和其他库提供类路径 从这里开始,我还没有完全阅读,但你可以找到有用的信息code.visualstudio.com/docs/java/java-tutorial 这不是重复的,因为问题是关于 Visual Studio,而不是 Visual Studio Code 感谢您的提示。我尝试这样做:export CLASSPATH=,然后使用此环境变量启动 Visual Studio 代码,但问题仍然存在:构建失败。 我不确定 vscode 是否真的适合 Java 开发,但无论如何这将取决于您将安装哪个扩展以使用 Java 开发。你安装了什么???此外,无论您选择哪种方式,我都建议您使用 Maven 或 Gradle 来管理您的依赖关系。 【参考方案1】:

更新到最新版本

先决条件:在 VS Code 中,您需要打开文件夹而不仅仅是文件以包含任何用于编译、运行、调试和测试的 jar 文件

VSCode 可以很好地与 maven 或 gradle 配合使用,如果我们使用其中任何一个,我们应该使用 maven 或 gradle 进行依赖管理。

如果你没有使用任何依赖管理,那么添加jar文件有两个选项

选项 1:手动

打开 .vscode/settings.json 文件(如果不存在,您可以创建一个)并在其中添加所需的 jar 文件,如下所示。在这种情况下,所有存在于 lib 目录中的 jar 文件都将被包含在内 + 我添加了 common-logging-1.1.1.jar,它位于项目目录之外


    "java.project.referencedLibraries": [
        "lib/**/*.jar",
        "c:\\path\\to\\jarfile\\commons-logging-1.1.1.jar"
    ]

选项 2:通过用户界面

如果启用了 Java 扩展,那么在左侧面板上将会有 Java 依赖项。 在那里,您可以单击+ 符号来添加客户 jar 文件。使用这种方法,settings.json 文件也会被更新

保留旧答案以供参考...

VSCode 可以在 maven 或 gradle 中正常工作。但是没有这些,据我所知,他们没有提供任何直接的方法来在类路径中添加 jar 文件。

解决方法是手动在.classpath 文件中添加条目。

例如在下面的文件中,我通过添加一行 <classpathentry exported="true" kind="lib" path="lib/commons-logging-1.2.jar"/> 手动添加了位于 lib 目录中的 common-logging-1.2.jar

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="output" path="bin"/>
        <classpathentry exported="true" kind="lib" path="lib/commons-logging-1.2.jar"/>
</classpath>

更新

最后,VSCode 团队正在努力寻找更好的解决方案。这仍在进行中,但您可以参考此链接以获得更好的方法https://github.com/microsoft/vscode-java-pack/issues/94#issuecomment-573487982

2020 年 4 月更新

VSCode 扩展更新现在支持此功能开箱即用。 现在 VS Code Java 让您无需任何构建工具即可直接使用 JAR 文件。转到 JAVA DEPENDENCIES 视图,找到 Referenced Libraries 节点并单击 + 图标。

参考https://github.com/microsoft/vscode-java-pack/blob/master/release-notes/v0.9.0.md#work-with-jar-files-directly

【讨论】:

当我查看 Java 依赖项时,我没有看到“引用库”节点。我只看到“JRE 系统库”。 (我在 macOS 10.15.4 上运行 1.44.2) 我得到了类似的东西——我看到的只是“JRE System Library”节点——没有“+”按钮,一个“Maven Dependencies”节点,它有一个“+”按钮,但随后不允许我在我的计算机上找到依赖的 jar 文件。如何让“引用的库”节点显示? 如果你使用maven,你应该使用maven进行依赖管理。上面的解决方案是如果你没有使用maven或者gradle @Zack 我有同样的问题,找不到我在此更新之前创建的项目的“引用库”节点。对我有用的解决方案是直接打开(文件>打开文件夹)项目的“src”文件夹。 如果您在显示项目菜单时遇到问题,请双击一个 java 文件(最好是其中包含 main 方法的文件)。有时项目菜单会在工作区被清除后消失。此外,如果您在 Windows 中,则用于 vscode 的 java 类路径工具不喜欢其中带有空格的路径。最好将这些罐子移动到没有空格的路径。见***.com/questions/54966653/…【参考方案2】:

我知道这已经很老了,但它在 Google 搜索结果中的排名仍然很高,很多人可能会发现它。 我只想推荐以下 VSCode 指南,其中包含一小部分但足够包含库的部分:

https://blog.usejournal.com/visual-studio-code-for-java-the-ultimate-guide-2019-8de7d2b59902

答案很简单:

    将 jar 添加到您喜欢的文件夹中,例如项目文件夹中的新目录“lib”。 在您的.classpath 中添加如下行:&lt;classpathentry kind="lib" path="lib/javaxt-cor.jar"/&gt;。 完成。您可以按照习惯导入它。

【讨论】:

我想提一下,一旦您在 Visual Code 中完成“创建 Java 项目”过程,.classpath 文件就会出现在您的项目工作区中。【参考方案3】:

将外部jar文件导入java项目,现在在vscode 1.48.2中运行良好,参考以下: https://code.visualstudio.com/docs/java/java-project#_working-with-jar-files

我想说的是,如果你的外部jar路径有中文,即使将jar文件放到项目根目录下的lib目录下,并且项目路径有中文,调试或运行时也会报错像这样的错误信息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

我不知道这个问题是否会出现在其他语言字符中。小心。

【讨论】:

【参考方案4】:

您必须安装 Java Dependency Viewer 扩展,这有助于导入 jar 文件并将它们添加到项目的类路径中添加库通过在每个 jar 文件的 &lt;classpath&gt;&lt;/classpath&gt; 标记中使用 &lt;classpathentry kind="lib" path="manual\path\entry\jarfile.jar"/&gt; 标记手动到“.classpath”文件。

首先你要做的是知道如何在 VS Code 中创建一个合适的 Java“项目”。

这样做:

    在 VSCode 中打开一个文件夹 按 Ctrl+Shift+P 打开命令面板 输入Java: Create New Project 根据您的要求按照步骤操作并提供项目名称

然后:展开资源管理器面板中的 Java 依赖项 部分,然后展开您的“项目名称”。

    当您将鼠标悬停在“Referenced Libraries”上时,您会看到“+”符号。点击它。 它将打开资源管理器。用它来选择你所有的 jar 文件,然后点击“Select Jar Files”按钮。

就是这样!!!!

顺便说一下,您可以在以下位置详细查看所有这些内容 https://code.visualstudio.com/docs/java/java-project#_working-with-jar-files ,它对所有相关内容都有清晰的视觉表示。

编码愉快!!!

【讨论】:

【参考方案5】:

一个糟糕的解决方案,但对我来说它有效。 (假设已安装 maven)。

找到你的 maven 存储库目录,对我来说是:

/Users/username/.m2/repository

然后在包名后面创建所需的路径。 如果您不知道包名称,可以将 .jar 重命名为 .zip 并提取内容。

还要创建一个版本号,如果你没有,那就补一个。 这是我为 byte-buddy-agent 创建的结构示例,因为它没有 maven sn-p。

完成后,您编辑 pom.xml 并在以下行中添加一些内容:

<dependency>
  <groupId>net.bytebuddyagent</groupId>
  <artifactId>byte-buddy-agent</artifactId>
  <version>1.9.8</version>
</dependency>

保存文件,重新加载更改,然后就可以开始了。 应该在目录中创建一堆文件。

【讨论】:

在maven repo中添加jar文件,推荐使用mvn install:install-file。你可以参考它的document【参考方案6】:

对于添加外部 Jar 文件,必须为库更改 maven 或 gradle .classpath 文件.. 示例

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="lib" path="lib/log4j-1.2.6.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

但是一个扩展与 vscode-java 冲突。 https://marketplace.visualstudio.com/items?itemName=georgewfraser.vscode-javac .如果您在更改 .classpath 文件后发现错误,请禁用它。你可以检查这个问题 - https://github.com/redhat-developer/vscode-java/issues/956

【讨论】:

【参考方案7】:

反正就是这么简单:

    用java创建项目ctrl+shift+p 将 jar 文件添加到您的 .classpath 在您的项目包顶部添加 [app];您的包裹名称 我们完成了,别忘了刷新它。

【讨论】:

您在第 1 步和第 2 步之间留下了一个巨大的漏洞。请修改,添加详细信息【参考方案8】:

我将以 Apache Commons Codec http://commons.apache.org/proper/commons-codec/ 为例,从头开始。我已经安装了 Visual Studio Code Java Pack Installer https://code.visualstudio.com/docs/languages/java 并获得了一个新的 VSCode 窗口。

    Ctrl+Shift+P 并键入以选择Java: Create Java Project 为您的项目选择一个文件夹并单击Select the location 为您的项目命名并按 Enter 键 在名为 lib 的项目中创建文件夹并从 zip 文件中复制到 commons-codec-1.14 文件夹中。 打开 .classpath 文件并在节点内添加以下行&lt;classpathentry kind="lib" path="lib/commons-codec-1.14/commons-codec-1.14.jar"/&gt; 注意您可能需要使用 lib 文件的绝对地址。在我第一次去上面的代码工作正常。我的本指南演示项目仅适用于完整路径,例如 &lt;classpathentry kind="lib" path="C:/Users/tim/Desktop/JavaExample/JavaExample/lib/commons-codec-1.14/commons-codec-1.14.jar"/&gt; 打开src\App.java文件,在package app;下面添加下面一行import org.apache.commons.codec.binary.Base64;

然后我可以在 App.java 中运行以下代码

package app;
import org.apache.commons.codec.binary.Base64;


public class App 
    public static void main(String[] args) throws Exception 
        String message = "Hello World";
        System.out.println(message);
        String encodedMessage = Base64.encodeBase64String(message.getBytes());
        System.out.println(encodedMessage);

    

生产

Hello World
SGVsbG8gV29ybGQ=

【讨论】:

以上是关于Visual Studio Code,Java 扩展,如何将 jar 添加到类路径的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Code闭关Java的代码语法检查。把Java代码的红色下划波浪线去掉。Visual Studio Code的大纲不显示Java代码的结构信息?

Visual Studio Code - Java - 导入错误等

Java on Visual Studio Code的更新 – 2021年4月

在 Visual Studio Code 中美化/格式化 Java 代码

使用Visual Studio Code开发和调试Java Burp扩展

Visual Studio Code - Java - Lombok - 该方法未针对该类型定义