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 クラスの import ステートメントでエラーが発生しました。これは次のメッセージです。

「インポート org.springframework を解決できません。」

POM.xml で依存関係について明確に述べましたが、私の Java クラスはまだそこから依存関係を選択できません。

4

18 に答える 18

49

適切にデバッグするには、いくつかの手順に従う必要があります。

1)mvn clean dependency:tree出力を見て、何が得られるかを正確に確認し、依存関係がすべてそこにあることを確認します。

2) mvn clean compile. これは失敗しますか?そうでない場合、Eclipseでのみエラーが発生するということですか?

あなたはコメントで「上記の両方のコマンドを実行しましたが、このエラーが発生しています」と述べました。うまくいきましmvn clean compileたか?それとも、それについてもエラーが発生しましたか?それが機能した場合、それは単なる IDE の問題であり、m2eclipseプラグインを調べます。さらに良いことに、無料版はEclipseよりも優れたmavenサポートを備えているため、IntelliJを使用してください;-)

いくつかのスタイルのもの...

人々は、必要のないときに、pom ファイルにあまりにも多くの依存関係を追加することがよくあります。mavenrepository.com のいくつかのリンクを見ると、それがわかりspring-oxmspring-jdbc両方が依存してspring-coreいるため、明示的に追加する必要はありません (たとえば)。mvn clean dependency:treeすべての後に何が入ってくるかを示しますが、これはより整理されています。

spring-batch-testtestスコープにする必要があります。

于 2013-11-09T02:20:03.923 に答える
24

最後に私の問題は解決しました。プロジェクトを「既存のプロジェクトをワークスペースに」としてインポートしていました。これは完全に間違っていました。その後、「Existing Maven project」を選択し、その後、いくつかの問題とすべてのエラーが削除されました。このプロセスで、Maven プロジェクトの新規参入者にとって重要な Maven の非常に多くのことを学ぶことができました。

于 2013-11-13T01:12:37.597 に答える
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 ---> Add Dependency == 次に、欠落している依存関係の名前または親名を選択します

ここに画像の説明を入力

于 2014-08-20T05:50:41.473 に答える
3

Eclipse でプロジェクト名を右クリックし、-->Maven-->Maven プロファイルを選択... 次に、設定する Maven プロファイルにチェックマークを付けます。[OK] をクリックすると、Eclipse は Maven 設定をプロジェクトに自動的にインポートします。プロジェクトのプロパティを確認すると、Maven Dependencies Library が追加されていることがわかります。

于 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 に答える
0

Eclipse STS でも同じ問題がありました。pom のスコープを「provided」から「compile」に変更すると問題が修正され、元に戻してもすべて問題ありませんでした。

于 2019-02-15T05:23:31.470 に答える