【问题标题】:"The import org.springframework cannot be resolved."“无法解析导入的 org.springframework。”
【发布时间】:2013-11-09 01:45:11
【问题描述】:

这是我的 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 类仍然无法从那里选择依赖项。

【问题讨论】:

  • 你确定你的 .m2 目录有合适的 JAR?你跑了mvn clean compile 还是mvn clean dependency:resolve?这给了你什么?
  • 你是在 IDE 还是命令行中运行它?
  • 我在 Eclipse IDE 上遇到了这个问题。我运行了上面的两个命令,但仍然出现此错误。
  • 我刚刚检查了 .m2 目录和 or.springframework.batch 的 jars 在那里
  • 尝试创建一个构建并运行它,如果它有效,那么您的 Maven 的 Eclipse 插件有问题。如果没有,请查看构建中打包了哪些库。

标签: java eclipse maven


【解决方案1】:

您需要遵循几个步骤才能正确调试。

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

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

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

一些风格的东西...

人们经常在不需要的时候在他们的 pom 文件中添加太多的依赖项。如果您查看 mavenrepository.com 中的几个链接,您会发现 spring-oxmspring-jdbc 都依赖于 spring-core,因此您无需显式添加(例如)。 mvn clean dependency:tree 将向您展示所有这些之后的内容,但这更整洁。

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

【讨论】:

  • 当我运行 mvn clean 和 mvn clean dependency:tree 命令时,它们都成功了。关于 m2eclipse 插件,我两天前安装了它,它工作正常。
  • 试试mvn eclipse:eclipsemvn m2eclipse:m2eclipse。不记得确切的语法,因为我使用 IntelliJ。完成这些之后,从 Eclipse 的根目录刷新,它应该会从内存中自行排序。
  • 我可以在 Eclipse 中看到此消息以寻求帮助。谁能帮我打开工件搜索对话框。 "打开工件搜索对话框以搜索 'org.springframework.batch.core' 以添加到您的目标。"
  • 您现在可以独立使用 Eclipse。顺便说一句,有人对您的问题投反对票的原因是因为它没有清楚地标明这是一个 IDE 问题。 Maven 本身正在解决,您的项目正在构建中,所以它只是您需要的 Eclipse 调整。
  • 马特,请帮我解决它。我可以在我的日食中做些什么来删除它。这占用了我很多时间。
【解决方案2】:

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

【讨论】:

  • @Vaibhav 面临同样的问题。节省了我的时间
  • 谢谢。我犯了完全相同的错误。已根据您的建议解决了!
  • 是的,这对我来说也很简单,很容易解决我的问题。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    添加这些依赖项

    </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>
    

    【讨论】:

    • 在尝试了所有这些简单的解决方案后解决了我的问题
    【解决方案5】:

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

    【讨论】:

    • 谢谢,这也是我的问题。我在 cli 中使用 webapp 原型创建了一个 maven 项目,然后导入到 intelliJ 中。看起来 intelliJ 正在寻找依赖项,所以我做了你所做的来解决这个问题:右键单击项目 > 添加框架支持 > 选择“maven”。
    • 在我的情况下,缺少的 JAR 已经作为项目依赖层次结构的一部分包含在库中,但是在 Maven 编译期间找不到它。因此,明确添加它确实可以解决问题,但我不确定为什么会出现这种行为。必须深入挖掘。
    【解决方案6】:

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

    【讨论】:

      【解决方案7】:

      就我而言,我必须删除 .m2/repository 中的 jar,然后执行 Maven-&gt;Update Maven Project

      看起来 jar 已损坏,删除并下载新的 jar 解决了问题。

      【讨论】:

        【解决方案8】:

        添加以下 JPA 依赖项。

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

        【讨论】:

          【解决方案9】:

          这个答案对我有帮助:

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

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

          【讨论】:

            【解决方案10】:

            对我来说,这个问题是在我忘记添加spring web依赖时出现的。我从eclipse's 自动完成检查了它,我的项目没有可用的org.springframework.web。然后从project &gt; spring &gt; add starters 我将网络依赖添加到pom.xml

            【讨论】:

              【解决方案11】:

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

              【讨论】:

                【解决方案12】:

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

                打开配置构建路径 行家 Java EE 集成 选择 Maven archiver 在 build 目录下生成文件 申请并关闭

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

                【讨论】:

                  【解决方案13】:

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

                  分辨率: 将 JRE 系统库的 Java 构建路径更改为 Workspace 默认 JRE [jdk 1.8]

                  步骤:

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

                  【讨论】:

                    【解决方案14】:

                    对我有用的唯一解决方案是将 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>
                    

                    【讨论】:

                      【解决方案15】:

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

                      【讨论】:

                        【解决方案16】:

                        您可以遵循几个步骤

                        1. 删除存储库文件夹

                          C:/Users/user_name/.m2

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

                          mvn 全新安装

                        3. 重启你的ide

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

                          mvn idea:idea

                        【讨论】:

                          【解决方案17】:

                          右键项目然后maven然后在文本框中写pom.xml

                          【讨论】:

                            【解决方案18】:

                            在我的例子中,我使用了下面的 pom.xml 文件 here

                            它对我有用。

                            【讨论】:

                            • 您能否简要介绍一下您使用的解决问题的 pom.xml 文件?
                            【解决方案19】:

                            在我的例子中,通过更新 maven 的依赖项解决了这个问题:

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 1970-01-01
                              • 2020-01-04
                              • 2013-03-31
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2012-04-04
                              • 2013-10-04
                              相关资源
                              最近更新 更多