1. ホーム
  2. java

[解決済み】 "インポートorg.springframeworkは解決できません。"

2022-02-17 11:37:14

質問

以下は、私の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 クラスの import 文でエラーが発生しました。

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 のスコープを設定します。