vscode+java+windows:我想在没有Maven的情况下导入和使用org.apache.logging.log4j.Logger

Posted

技术标签:

【中文标题】vscode+java+windows:我想在没有Maven的情况下导入和使用org.apache.logging.log4j.Logger【英文标题】:vscode+java+windows: I want to import and use org.apache.logging.log4j.Logger without Maven 【发布时间】:2019-09-26 09:18:06 【问题描述】:

仅使用添加了 java 扩展的 vscode,以及没有任何其他库或扩展的本机 Java 8,我想使用 log4j。

我已经下载了各种 .jar 文件,它们位于我的类路径中(尽管在 vscode 中很难验证类路径,但如果有一个 vscode IDE 方法来验证代码所看到的实际路径,那就太好了)。这些文件确实显示在左侧 EXPLORER 的“JAVA DEPENDENCIES”手风琴菜单下的 vscode 中。

三个主要的 .jar 文件是:

log4j-api-2.11.0.jar log4j-core-2.11.0.jar log4j-1.2-api-2.11.0.jar

我有一个 launch.json 文件,其中定义了 '"windows": "classPaths":...' 3 个主要的 .jar 文件。

这些文件实际上在我的 Windows CLASSPATH 变量中,并在我从这个 .java 代码中执行这行代码时显示:

System.out.println(System.getProperty("java.class.path"));

这显示了三个 jar 文件所在位置的文字路径,以及“.”的条目,以及它们所在的文件夹(可能有点矫枉过正)。

我从 vscode 编辑器收到的错误仍然是

The import org.apache cannot be resolved

在我的代码的 .java 文件中,我有导入,并且在 org.apache 下有一条红色波浪线

import org.apache.logging.log4j.Logger

任何不涉及添加 Maven 的快速修复建议?

【问题讨论】:

【参考方案1】:

1.确保您已创建一个名为 lib 的文件夹并将您的 .jar 文件添加到其中

2.在.classpath中配置路径如:

<classpathentry kind="lib" path="lib/log4j-1.2-api-2.11.2.jar"/>
<classpathentry kind="lib" path="lib/log4j-api-2.11.2.jar"/>
<classpathentry kind="lib" path="lib/log4j-core-2.11.2.jar"/>

3.如果还是报错,清理工作区目录:

VS Code 用户工作区存储区位于以下位置:

Windows : %APPDATA%\Code[ - Variant]\User\workspaceStorage\ MacOS:$HOME/Library/Application Support/Code[ - 变体]/User/workspaceStorage/ Linux : $HOME/.config/Code[ - Variant]/User/workspaceStorage/

可以参考add jar

【讨论】:

谢谢!我还发现要清理工作区,您可以按 F1 并从菜单中选择“Java:Clean the ...”。此外,一篇文章建议在 'kind="lib" 之前将 'exported="true"' 添加到三个 classpathentry 元素中。一旦我解决了这个问题,还有其他问题。大多数情况下,我通过编辑launch.json osx 和windows 条目来修复这些问题,这样一旦我编译了我的.class 文件,运行时就可以找到所需的log4j jar 文件。再次感谢!

以上是关于vscode+java+windows:我想在没有Maven的情况下导入和使用org.apache.logging.log4j.Logger的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 基础开发环境 vscode 搭建 Windows下VSCode编译运行简单java

Java调试器卡在vscode中

如何在android studio或vscode中搜索整个Flutter源码

vscode 不显示 git 密码提示

如何在 vscode 中使用 C++20?

VS Code - Cygwin作为集成终端