简体   繁体   English

VS Code 无法正确运行非 Spring Maven 项目

[英]VS Code can not run non-Spring Maven project correctly

I must apologize if it is a duplicate question, but I googled first without getting a useful answer.如果这是一个重复的问题,我必须道歉,但我先用谷歌搜索,但没有得到有用的答案。

Description描述

Today I'm trying to migrate from IDEA to VS Code, but when running a non-spring Maven project in VS Code, it won't run with dependencies in pom.xml, I can only get Exception in thread "main" java.lang.NoClassDefFoundError in console.今天,我正在尝试从想法迁移到VS代码,但是在运行非SPRING Z9115C10980645C4131313F244AC1A377F7Z在VS代码中项目时,它不会在POM.Z0F635DD0E0F3874FF58B581C132E6C77.6C7.6C7.ANFER中运行Exception in thread "main" java.lang.NoClassDefFoundError控制台中的Exception in thread "main" java.lang.NoClassDefFoundError

Here I'll provided a brief example:在这里,我将提供一个简短的示例:

The project shown below use fastjson to parse a Map to JSON string, the fastjson is a maven repository defined in pom.xml . The project shown below use fastjson to parse a Map to JSON string, the fastjson is a maven repository defined in pom.xml .

Project Structure项目结构

项目结构

App.java 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 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>

Maven Dependencies Shown in VS Code VS Code 中显示的 Maven 依赖关系

Maven 依赖项

Try to run the project with Run and Debug in VS Code尝试在 VS Code 中使用Run and Debug运行项目

运行和调试

Result结果

结果 Look, The VS Code did not run this Maven project correctly.看,VS Code 没有正确运行这个 Maven 项目。 it did not run with dependencies in pom.xml!它没有与 pom.xml 中的依赖项一起运行!

Trivia琐事

  1. I have installed Extension Pack for Java for VS Code我已经为 VS Code 安装Extension Pack for Java
  2. I even installed Spring Boot Extension Pack for VS Code我什至为 VS Code 安装了Spring Boot Extension Pack
  3. I have installed Maven and configured corresponding Environment Variable, mvn command is able to run in console我已经安装了Maven并配置了相应的环境变量, mvn命令可以在控制台运行
  4. The project above is running correctly in IDEA上面的项目在IDEA中运行正常
  5. Spring project is able to run normally in VS Code, but the problem project is maven without Spring Spring 项目可以在 VS Code 中正常运行,但是问题项目是 maven 没有 Spring

Help帮助

Did I miss some configurations for VS Code to run Maven project?我是否错过了 VS Code 运行 Maven 项目的一些配置? What should I do to make it running correctly in VS Code?我应该怎么做才能让它在 VS Code 中正确运行?

Your code throws no errors in my project:您的代码在我的项目中没有引发错误:

在此处输入图像描述

I think there's a cache messed it, you may我认为有一个缓存搞砸了,你可以

  1. Turn to local dependency installation folder, delete \User folder\.m2\repository\com\alibaba\fastjson\1.2.78转到本地依赖安装文件夹,删除\User folder\.m2\repository\com\alibaba\fastjson\1.2.78
  2. Delete the dependency fastjson in pom.xml删除pom.xml中的依赖fastjson
  3. Open Command Palette and choose Java: Clean Java Language Server Workspace打开命令面板并选择Java:清理 Java 语言服务器工作区
  4. re-add the fastjson dependency and follow the notification to synchronize project configuration.重新添加fastjson依赖,按照通知同步项目配置。

Okay, finally I resolved my problem with VS Code myself.好的,最后我自己解决了 VS Code 的问题。 I put my solution here in case someone or I met the same problem in the future.我把我的解决方案放在这里,以防将来有人或我遇到同样的问题。

To solve the issue:要解决问题:

1. I moved my maven dependencies path to else where: I created a folder G:\maven-repo , and modified global settings.xml of maven like below: 1. 我将我的 maven 依赖项路径移动到其他位置:我创建了一个文件夹G:\maven-repo ,并修改了 Z402C5D9AF6B43711EA070BEE5170F74D 的全局settings.xml 。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>

2. In settings.json of VS Code, I added the line below, which refers to where the settings.xml in step 1 is: 2.在VS Code的settings.json中,我加了下面这行,指的是第1步的settings.xml在哪里:

"java.configuration.maven.globalSettings": "G:/ideaIU/plugins/maven/lib/maven3/conf/settings.xml"

3. Restart VS Code, execute Java: Clean Java Language Server Workspace as @Molly Wang-MSFT said. 3.重启VS Code,执行Java: Clean Java Language Server Workspace ,正如@Molly Wang-MSFT所说。

4. After restarting VS Code again, pressing the F5 key, the project finally runs correctly. 4、再次重启VS Code后,按F5键,项目终于可以正常运行了。

正确地

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM