【问题标题】:VS Code can not run non-Spring Maven project correctlyVS Code 无法正确运行非 Spring Maven 项目
【发布时间】:2022-01-16 21:23:36
【问题描述】:

如果这是一个重复的问题,我必须道歉,但我先用谷歌搜索了没有得到有用的答案。

说明

今天我正在尝试从IDEA迁移到VS Code,但是在VS Code中运行非spring Maven项目时,它不会在pom.xml中运行依赖项,我只能在控制台中获得Exception in thread "main" java.lang.NoClassDefFoundError .

这里我将提供一个简单的例子:

下图项目使用fastjson解析一个Map to JSON字符串,fastjson是定义在pom.xml的maven仓库。

项目结构

App.java

package com.example;

import java.util.HashMap;
import java.util.Map;

import com.alibaba.fastjson.JSON;

public class App {
    public static void main(String[] args) {
        Map<String, String> item = new HashMap<>();
        item.put("a", "1");
        item.put("b", "2");
        System.out.println(JSON.toJSONString(item));
    }
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>demo</artifactId>
  <version>0.0.1</version>

  <name>demo</name>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.78</version>
    </dependency>
  </dependencies>
</project>

VS Code 中显示的 Maven 依赖项

尝试在 VS Code 中使用Run and Debug 运行项目

结果

看! VS Code 没有正确运行这个 Maven 项目,它没有运行 pom.xml 中的依赖项!

琐事

  1. 我已经为 VS Code 安装了Extension Pack for Java
  2. 我什至为 VS Code 安装了Spring Boot Extension Pack
  3. 我已经安装了Maven并配置了相应的环境变量,mvn命令可以在控制台运行
  4. 上述项目在 IDEA 中运行正常
  5. Spring项目在VS Code中可以正常运行,但是问题项目是maven没有Spring

帮助

我是否错过了 VS Code 运行 Maven 项目的一些配置?我应该怎么做才能让它在 VS Code 中正确运行?

【问题讨论】:

  • 你定义的类import com.alibaba.fastjson.JSON;根本不存在......这意味着它不能从给定的依赖中获得......
  • @khmarbaise 不,它存在,我这里只是用它作为例子,你可以将它更改为任何其他 maven 依赖项,你会发现在 VS Code 中也无法使用它们运行。我说这个示例项目可以在 IDEA 中运行。和这个fastjson无关。

标签: java maven visual-studio-code


【解决方案1】:

最后,我自己解决了 VS Code 的问题。我把我的解决方案放在这里,以防将来有人或我遇到同样的问题。

解决问题:

  1. 我将我的 maven 依赖路径移到了其他位置:我创建了一个文件夹 G:\maven-repo,并修改了 maven 的全局 settings.xml,如下所示:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>G:/maven-repo</localRepository>
</settings>
  1. 在 VS Code 的 settings.json 中,我添加了下面这行,它指的是第 1 步中的 settings.xml 所在的位置:
"java.configuration.maven.globalSettings": "G:/ideaIU/plugins/maven/lib/maven3/conf/settings.xml"
  1. 重启 VS Code,按照@Molly Wang-MSFT 说的执行Java: Clean Java Language Server Workspace

  2. 再次重启VS Code后,按F5键,项目终于可以正常运行了。

【讨论】:

    【解决方案2】:

    您的代码在我的项目中没有抛出任何错误:

    我认为有一个缓存搞砸了,你可以

    1. 转到本地依赖安装文件夹,删除\User folder\.m2\repository\com\alibaba\fastjson\1.2.78
    2. 删除fastjson中的依赖pom.xml
    3. 打开命令面板并选择 Java: Clean Java Language Server Workspace
    4. 重新添加fastjson依赖,按照提示同步项目配置。

    【讨论】:

    • 我认为我的电脑上安装的 VS 代码出了点问题,当我换到另一台电脑时,它可以工作了!我想我最好重新安装我的 vscode....谢谢你的帮助
    • @Paper_Folding。然后你可以reset VS Code
    猜你喜欢
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 2018-08-11
    相关资源
    最近更新 更多