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

77
在Eclipse IDE中,我使用以下步骤添加JAR库: 项目>构建路径>配置生成路径...。在Visual Studio Code中的等效操作是什么?我查看了launch.json文件,其中定义了一个classpath。将JAR文件添加到此classpath(数组)变量似乎没有任何效果。实际上,这是一个重复的问题:Visual Studio Java Language Support add jar,但该问题没有得到解答。这是一个非常基础的问题,我真的无法理解为什么在微软的文档或通过Google搜索找不到解决方案。

Visual Studio Code是一款文本编辑器,而不是IDE,因此如果您使用的是Windows系统,则系统变量将包含Java和其他库的类路径。 - Shubham Dixit
1
这不是重复问题,因为该问题涉及到的是Visual Studio,而不是Visual Studio Code。 - C.Champagne
如果您在Eclipse中添加了一个jar依赖项,那么在vscode中重新打开同一项目应该可以工作,如果它是一个简单的Java项目。 如果不行,请提供一个能够重现问题的示例项目 这里是一个样本Eclipse项目。 我无法使用VS code导入此Eclipse项目。我必须使用文件夹源 [test_vs_code.zip](https://drive.google.com/open?id=1iC-GkjLeX8_5wQBzq00_QmEDVM_y2j57) 对我来说有效(在我的机器上指向json.jar)。它甚至在Atom中工作。您可以尝试打开这个(jar包包含在项目目录中,因此更加便携)? [test_vs_code2 - Ganesh Chowdhary Sadanala
这里有很多很棒的答案:https://stackoverflow.com/questions/50749388/setting-the-classpath-in-a-visual-studio-code-maven-based-java-project - Greasyjoe
https://github.com/Microsoft/vscode-java-pack/issues/94 - Hemang
显示剩余4条评论
10个回答

85

最新版本更新

前提条件:在 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文件也将被更新。

添加Java依赖项的屏幕截图

旧答案仅供参考...

VSCode与Maven或Gradle配合使用效果良好。 但是没有这些工具时,据我所知,他们没有提供任何直接的方法来将jar文件添加到类路径中。

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

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


7
当我查看Java依赖性时,我没有看到“引用的库”节点。我只看到“JRE系统库”。(我在macOS 10.15.4上运行1.44.2版本。) - Zack
1
我有类似的问题——我只能看到“JRE系统库”节点,它没有“+”按钮;还有一个名为“Maven Dependencies”的节点,它有“+”按钮,但却无法让我在电脑上找到依赖的jar文件。你怎么才能让“Referenced Libraries”节点出现? - paul frith
要找到“引用的库”,请确保您已安装了“Java项目管理器”扩展。 - aderchox
我在 Stack Overflow 上发布了这个问题 https://dev59.com/EsLra4cB1Zd3GeqPCiLj,当使用引用的库 + 按钮时没有效果,并且它提到了只读,为什么?请帮忙解决。 - tarekahf
如果没有“+”按钮怎么办?什么是“Java依赖项”? - Gerry
显示剩余3条评论

7

按以下步骤操作VSCode(2022)

确保已安装Java扩展包

安装Java扩展包,需要重启VSCode

项目结构

创建如下结构

.vscode/
 | -- settings.json
bin/
lib/ <-- Add here all the .jar files 
src/ <-- Add here you java source code

因此,项目结构应该像这样:

enter image description here

将设置添加到settings.json

{
    "java.project.sourcePaths": [
        "src"
    ],
    "java.project.outputPath": "bin",
    "java.project.referencedLibraries": [
        "lib/**/*.jar",
    ]
}

  • { "java.project.sourcePaths": [ "src" ], "java.project.outputPath": "bin", "java.project.referencedLibraries": [ "lib/**/*.jar", ] }

  • java.project.sourcePaths: 您的Java源代码路径

  • java.project.outputPath: 二进制输出路径

  • java.project.referencedLibraries: .jar 文件路径

现在,请重新启动 vscode,如果仍有错误,则可能需要清除Visual Studio Code中的文件内容缓存

现在,您应该能够在引用库列表中看到该库。 (注意:这可能会在未来的 vscode 版本中更新,如名称、位置等)

enter image description here


我有一个多模块的Maven项目,在使用断点调试时,第二个模块的源代码无法获得。我使用了java.project.sourcePaths,但被忽略了。请问能否提供帮助? https://stackoverflow.com/questions/74545754/failed-to-get-sources-when-debugging-multi-module-maven-project-in-vscode - tarekahf

5

我知道这篇文章已经很老了,但它在谷歌搜索结果中排名很高,很多人可能会找到它。 我只想推荐以下关于VSCode的指南,其中包括一个小而足够的部分来包含库:

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

答案非常简单:

  1. 将jar文件添加到您喜欢的文件夹中,例如项目文件夹中的新目录“lib”。
  2. 在您的 .classpath 中添加一行类似于: <classpathentry kind="lib" path="lib/javaxt-cor.jar"/>
  3. 完成。您可以像往常一样简单地导入它。

1
我想提一下,在 Visual Code 中经过“创建 Java 项目”的过程后,.classpath 文件会出现在您的项目工作区中。 - harperville

3
您需要安装Java依赖项查看器扩展程序,这有助于导入jar文件并将其添加到项目的类路径中,或者通过在<classpath></classpath>标记内使用<classpathentry kind="lib" path="manual\path\entry\jarfile.jar"/>标记手动将库添加到“.classpath”文件中。
首先,您需要知道如何在VS Code中创建适当的Java“项目”。
要做到这一点:
  1. 在VSCode中打开一个文件夹
  2. 按下Ctrl+Shift+P打开命令面板(Command Palette)
  3. 键入Java: Create New Project
  4. 根据您的要求按照步骤提供项目名称并完成
然后:在资源管理器面板中展开Java Dependencies部分,然后展开您的“项目名称”。
  1. 当您悬停在"Referenced Libraries"上时,您会看到"+"符号。单击它。
  2. 它会打开资源管理器。使用它来选择所有的jar文件并单击"Select Jar Files"按钮。
就是这样!!!!
顺便说一句,在https://code.visualstudio.com/docs/java/java-project#_working-with-jar-files上,您可以详细了解所有相关的内容,其中包含了一些清晰的可视化表示。
祝编码愉快!!!

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

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


0

无论如何都很简单:

  1. 使用Java创建项目 ctrl+shift+p
  2. 将jar文件添加到.classpath
  3. 在您的项目包[app]顶部添加您的包名称
  4. 我们完成了,不要忘记刷新它。

4
您在第一步和第二步之间留下了一个巨大的漏洞。请修改并添加详细信息。 - Steve

0

我没有阅读这里的每一个答案,但它们似乎都与我看到的界面不符。我四处查看并注意到在左侧窗格底部,在“OUTLINE”和“TIMELINE”下面,有一个“JAVA PROJECTS”手风琴菜单。当我悬停在上面时,会出现一个省略号,点击它会弹出一个菜单,其中包含选项:“配置类路径”。选择它会弹出一个窗口,最后一节是“引用库”,您可以从文件系统中添加jar。


0

如果没有使用Maven或Gradle,想要添加外部Jar文件,则必须更改.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

0
一个可行但不太好的解决方案(假设已安装Maven)。
找到你的Maven仓库目录,对我来说它是:

/Users/username/.m2/repository

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

同时创建一个版本号,如果没有,请自己编一个。 这是我为 byte-buddy-agent 创建的结构示例,因为它没有 Maven 片段。

完成此操作后,您需要编辑pom.xml并添加以下内容:

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

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

enter image description here


在 Maven 仓库中添加 jar 文件的推荐方法是使用mvn install:install-file命令。你可以参考它的文档 - Hemang

0

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

  1. Ctrl+Shift+P并输入以选择 Java: Create Java Project
  2. 选择项目文件夹,然后单击 Select the location
  3. 给你的项目命名,并按Enter键
  4. 在项目中创建名为lib的文件夹,并将commons-codec-1.14文件夹从zip文件复制到其中。
  5. 打开.classpath文件,在node标签内添加以下行
    <classpathentry kind="lib" path="lib/commons-codec-1.14/commons-codec-1.14.jar"/>
    注意:您可能需要使用lib文件夹的绝对地址。在我的第一次尝试中,上述代码可以正常工作。但是,本指南的演示项目只能使用完整路径才能正常工作,例如:
    <classpathentry kind="lib" path="C:/Users/tim/Desktop/JavaExample/JavaExample/lib/commons-codec-1.14/commons-codec-1.14.jar"/>
  6. 打开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=

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接