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

时间:2013-11-09 01:45:11

标签: java eclipse maven

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

Below is my java class




 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类的import语句中遇到错误。 “无法解析导入org.springframework。”我清楚地提到了POM.xml中的依赖关系仍然是我的java类无法从那里选择依赖。

17 个答案:

答案 0 :(得分:34)

您需要按照以下几个步骤进行正确调试。

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,因此您无需明确添加(例如) )。 <{1}}会告诉你在所有这些之后会发生什么,但这更加整洁。

mvn clean dependency:tree应为spring-batch-test范围。

答案 1 :(得分:15)

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

答案 2 :(得分:6)

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

enter image description here

答案 3 :(得分:6)

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

答案 4 :(得分:5)

添加这些依赖项

</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 :(得分:3)

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

答案 6 :(得分:2)

这里的答案帮助了我:

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

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

答案 7 :(得分:1)

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

答案 8 :(得分:1)

添加以下JPA依赖项。

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

答案 9 :(得分:0)

在我的情况下,我必须删除.m2/repository内的广告,然后执行Maven->Update Maven Project

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

答案 10 :(得分:0)

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

解决方案: 将JRE系统库的Java构建路径更改为无法使用工作区的JRE [jdk 1.8]

步骤:

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

答案 11 :(得分: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>

答案 12 :(得分:0)

在Eclipse STS中有相同的问题。 将pom中的范围从“提供”更改为“编译”可以解决问题,当我将其更改回所有内容时,一切都还可以。

答案 13 :(得分:0)

您可以按照以下步骤操作

  1. 删除存储库文件夹

    C:/Users/user_name/.m2

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

    mvn全新安装

  3. 重新启动ide

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

    mvn idea:idea

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

  

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

我的项目现已开始运行。

答案 16 :(得分:-1)

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

enter image description here