Java 在IntellJ IDEA中运行spring boot项目时,为什么不将依赖项添加到类路径?

Java 在IntellJ IDEA中运行spring boot项目时,为什么不将依赖项添加到类路径?,java,spring,maven,spring-boot,intellij-idea,Java,Spring,Maven,Spring Boot,Intellij Idea,我的操作系统是Ubuntu 16.04,IDE是IntellJ IDEA2018.1.3 最近,我尝试在Maven中运行一个简单的Spring Boot项目,但当我运行此应用程序时,我收到一些错误消息,表明依赖项不存在,如下所示: 我想依赖项并没有添加到类路径中,但项目配置和maven依赖项是正常的。我尝试在操作系统为Windows 10的其他计算机上运行相同的项目。它工作得很好 马文: 项目结构: Mypom.xml <?xml version="1.0" encoding

我的操作系统是Ubuntu 16.04,IDE是IntellJ IDEA2018.1.3

最近,我尝试在
Maven
中运行一个简单的
Spring Boot
项目,但当我运行此应用程序时,我收到一些错误消息,表明依赖项不存在,如下所示:

我想依赖项并没有添加到类路径中,但项目配置和maven依赖项是正常的。我尝试在操作系统为Windows 10的其他计算机上运行相同的项目。它工作得很好

  • 马文:

  • 项目结构:

My
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.test</groupId>
<artifactId>test1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.12</junit.version>
    <mysql.version>5.1.43</mysql.version>
</properties>


<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.8.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.1</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
    </dependency>

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

4.0.0
com.test
测试1
1.0-快照
战争
UTF-8
1.8
1.8
4.12
5.1.43
org.springframework.boot
spring启动程序父级
1.5.8.1发布
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧启动机aop
org.springframework.boot
弹簧起动试验
测试
org.mybatis.spring.boot
迈巴蒂斯弹簧靴起动器
1.3.1
朱尼特
朱尼特
${junit.version}
mysql
mysql连接器java
${mysql.version}
阿里巴巴
fastjson
1.2.41

以下步骤用于解决通过
Maven Project
创建的项目的
库未找到
错误。但是,如果您使用
Spring初始化器
创建一个项目,那么这样的问题就不存在了。现在在
Intellij
中打开
项目结构(快捷键Ctrl+Alt+Shift+S)。然后按照下图进行操作:

单击
创建工件
。然后按照下图进行操作:

选择所有库,然后右键单击,然后选择
Put-into/WEB\u-INF/lib
。单击OK然后编译,然后一切都会好起来。但是记住对每个新添加的库重复这个过程。遗憾的是,
maven项目没有自动化的过程,但是您可以切换到
Spring初始化器

更新

如果您是通过
Spring initializer
创建项目的,那么我怀疑您是否在使用系统上安装的默认
Tomcat
。在这种情况下,您应该使用
嵌入式tomcat
,它在运行时由IDE自动管理。maven依赖项链接如下所示,删除之前添加的tomcat配置:

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-tomcat -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <version>1.5.13.RELEASE</version>
</dependency>

org.springframework.boot
弹簧启动机tomcat
1.5.13.释放

我刚刚删除了
idea/bin/idea.properties
文件中
idea.system.path
的目录

删除
.idea/
*.iml
文件,然后重新导入项目


但是我仍然不知道这个问题的原因和解决方案。

您是否使用
Spring初始化器创建了这个项目?当您创建一个maven项目并添加所有
spring
依赖项时,就会发生这种情况。我也在使用Ubuntu 16。04@SAM不,我首先创建一个空项目,然后在项目结构中添加新的maven模块。这就是为什么您要面对这个问题。但您也可以继续,让我给您发一个屏幕截图。@SAM我使用了Spring Initializer,但它仍然报告这些错误。请参阅我的更新…如果您发现解决方案有帮助,请接受答案作为解决方案。快乐编码!!!好的,但是所有的库总是放在
/WEB-INF/lib
中。是的,但不是放在输出文件夹中。你需要像图中描述的那样去做,这样库也可以在输出中使用。好的,我理解你的意思。但当我创建项目时,我将
war
添加到了我的
pom.xml
。因此,库在
/WEB-INF/lib
下完好无损,位于
工件的
中。你尝试过这个建议吗?@AnandVarkeyPhilips是的,我已经将它设置为答案。