43

这是我的 POM.xml 文件:

<project>
    <properties>
        <jdk.version>1.6</jdk.version>
        <spring.version>3.2.2.RELEASE</spring.version>
        <spring.batch.version>2.2.0.RELEASE</spring.batch.version>
        <mysql.driver.version>5.1.25</mysql.driver.version>
        <junit.version>4.11</junit.version>
    </properties>

    <dependencies>

        <!-- Spring Core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- Spring jdbc, for database -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- Spring XML to/back object -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- MySQL database driver -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.driver.version}</version>
        </dependency>

        <!-- Spring Batch dependencies -->
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-core</artifactId>
            <version>${spring.batch.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-infrastructure</artifactId>
            <version>${spring.batch.version}</version>
        </dependency>

        <!-- Spring Batch unit test -->
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-test</artifactId>
            <version>${spring.batch.version}</version>
        </dependency>

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

    </dependencies>
    <build>
        <finalName>spring-batch</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>false</downloadJavadocs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>


下面是我的java类:

import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        String[] springConfig  =
            {
                "spring/batch/jobs/job-hello-world.xml"
            };
        ApplicationContext context =
            new ClassPathXmlApplicationContext(springConfig);
        JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
        Job job = (Job) context.getBean("helloWorldJob");
        try {
            JobExecution execution = jobLauncher.run(job, new JobParameters());
            System.out.println("Exit Status : " + execution.getStatus());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我的 App.java 类中的导入语句出现错误,这是消息:

“无法解析导入的 org.springframework。”

我清楚地提到了 POM.xml 中的依赖关系,但是我的 java 类仍然无法从那里选择依赖关系。

4

18 回答 18

49

您需要执行几个步骤才能正确调试。

1)mvn clean dependency:tree查看输出以准确了解您得到的内容并验证您的依赖项都在那里。

2) mvn clean compile。这会失败吗?如果不是,这是否意味着您只会在 Eclipse 中得到错误?

您在评论中提到“我运行了上面的两个命令,但我收到了这个错误”。工作了吗mvn clean compile?或者你也得到了一个错误?如果它有效,那么它只是一个 IDE 问题,我会查看m2eclipse插件。更好的是,使用 IntelliJ,因为免费版本比 Eclipse 具有更好的 Maven 支持;-)

一些风格的东西...

人们经常在不需要的时候在他们的 pom 文件中添加太多的依赖项。如果您查看 mavenrepository.com 中的几个链接,您可以看到它们都依赖于它们,spring-oxm因此您不需要显式添加它(例如)。将向您展示所有这些之后会发生什么,但这更整洁。spring-jdbcspring-coremvn clean dependency:tree

spring-batch-test应该是test范围。

于 2013-11-09T02:20:03.923 回答
24

最后我的问题得到了解决。我将项目作为“现有项目导入工作区”。这是完全错误的。之后我选择了“现有的 Maven 项目”,之后一些小问题和所有错误都被删除了。在这个过程中,我在 Maven 中学到了很多东西,这对于 Maven 项目的新手来说很重要。

于 2013-11-13T01:12:37.597 回答
17

对我有用的解决方案是右键单击项目 --> Maven --> 更新项目,然后单击确定。

于 2018-07-05T00:38:05.213 回答
11

添加这些依赖项

</dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>
</dependencies>
于 2017-04-10T11:40:41.947 回答
6

我对这个问题的直接解决方案:右键单击项目 --> Maven ---> 添加依赖项 == 然后选择缺少依赖项的名称或父名称

在此处输入图像描述

于 2014-08-20T05:50:41.473 回答
3

在Eclipse中右键项目名称,-->Maven-->Select Maven Profiles... 然后勾选你要设置的maven profile。单击确定后,Eclipse 会自动将 maven 设置导入到您的项目中。如果您检查项目的属性,您会发现已添加 Maven 依赖库。

于 2015-10-22T09:28:13.480 回答
3

添加以下 JPA 依赖项。

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
于 2020-05-11T10:43:50.187 回答
2

这个答案从这里帮助了我:

您应该查看项目的构建路径以检查引用的库是否仍然存在。因此,右键单击您的项目,然后“属性 -> Java 构建路径 -> 库”并检查您是否仍然在此处提到的位置有 spring 库 JAR。如果没有,只需在此对话框中将它们重新添加到您的类路径中。

http://forum.spring.io/forum/spring-projects/springsource-tool-suite/98653-springframework-cannot-be-resolved-error

于 2017-02-07T15:48:26.093 回答
2

就我而言,我不得不删除里面的罐子.m2/repository,然后做了一个Maven->Update Maven Project

看起来罐子已损坏,删除并下载新罐子解决了这个问题。

于 2018-05-19T10:56:13.070 回答
2

对我来说,当我忘记添加 spring web 依赖时,就会出现这个问题。我从eclipse's自动完成中检查了我的项目没有org.springframework.web可用的。然后从project > spring > add starters我将 web 依赖项添加到pom.xml.

于 2021-06-02T14:32:24.787 回答
1

如果您确定您的 pom.xml 非常好,那么您只需更新项目即可。右键项目——Maven——更新项目。或简单地 alt+F5。

于 2018-02-03T14:09:50.887 回答
0

org.springframework.beans.factory.support.beannamegenerator ,是我的错误。我做了一个 maven clean、maven build 等,这没用,我发现我的 .m2 文件夹不在我的 eclipse 安装文件夹中。我在 eclipse 文件夹之外找到了 .m2 文件夹,我将其粘贴到 eclipse 文件夹中,然后在 eclipse 中我碰巧这样做了:-

打开configure build path maven Java EE integration 选择maven archiver在build目录下生成文件apply并关闭

我的项目现在已经启动并运行。

于 2017-07-06T21:10:07.347 回答
0

我将一个项目导入为“现有 Maven 项目”并遇到了这个问题。

解决方案:将 JRE 系统库的 Java 构建路径更改为 Workspace 默认 JRE [jdk 1.8]

脚步:

右键单击项目->构建路径->配置构建路径->库选项卡->双击JRE系统库->更改为工作区默认JRE [jdk 1.8]

于 2018-09-12T06:17:33.813 回答
0

对我有用的唯一解决方案是将 maven-compiler-plugin 添加到 pom.xml

<project ...>
    ...
    <build>
        ...
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <fork>true</fork>
                    <executable>C:\Program Files\Java\jdk1.7.0_79\bin\javac</executable>
                </configuration>
            </plugin>
        </plugins>
    </build>
    ...
</project>
于 2018-10-30T05:16:03.470 回答
0

在 Eclipse STS 中有同样的问题。将 pom 中的范围从“提供”更改为“编译”解决了问题,当我将其更改回来时,一切仍然正常。

于 2019-02-15T05:23:31.470 回答
0

您可以遵循几个步骤

  1. 删除存储库文件夹

    C:/用户/用户名/.m2

  2. 然后使用 IDE 终端运行命令或在项目文件夹中打开 cmd

    mvn 干净安装

  3. 重启你的ide

  4. 如果不能解决您的问题,请运行此命令

    mvn想法:想法

于 2020-03-23T10:26:17.607 回答
-2

就我而言,我在 这里使用了以下 pom.xml 文件

它对我有用。

于 2018-09-14T20:11:38.853 回答
-2

就我而言,通过更新 maven 的依赖项解决了这个问题:

在此处输入图像描述

于 2019-01-27T18:11:15.283 回答