繁体   English   中英

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

[英]“The import org.springframework cannot be resolved.”

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

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

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范围。

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

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

添加这些依赖项

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

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

在此处输入图片说明

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

这里的答案对我有帮助:

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

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

就我而言,我必须删除.m2/repository的 jars,然后执行Maven->Update Maven Project

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

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

添加以下 JPA 依赖项。

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

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

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

打开配置构建路径 maven Java EE 集成 选择 Maven 归档器在构建目录下生成文件 apply 并关闭

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

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

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

步骤:

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

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

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

您可以遵循几个步骤

  1. 删除存储库文件夹

    C:/Users/user_name/.m2

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

    mvn 全新安装

  3. 重启你的ide

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

    mvn 想法:想法

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

它对我有用。

就我而言,此问题已通过更新 maven 的依赖项解决:

在此处输入图片说明

暂无
暂无

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

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