<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クラスはそこから依存関係を選択できません。
適切にデバッグするには、いくつかの手順に従う必要があります。
1)mvn clean dependency:tree
出力を見て、取得したものを正確に確認し、依存関係がすべてあることを確認します。
2)mvn clean compile
。これは失敗しますか?そうでない場合、Eclipseでエラーが発生するだけですか?
あなたはコメントで「そして、私は上記の両方のコマンドを実行しますが、このエラーが発生しています」と述べました。 mvn clean compile
は機能しましたか?または、それについてもエラーが発生しましたか?それが機能した場合、それはIDEの問題であり、m2Eclipse
プラグインを確認します。さらに良いのは、無料版ではEclipseよりも優れたmavenサポートがあるため、IntelliJを使用することです;-)
いくつかのスタイルのもの...
必要のないときに、pomファイルに多くの依存関係を追加することがよくあります。 mavenrepository.comのいくつかのリンクを見ると、spring-oxm
とspring-jdbc
の両方がspring-core
に依存していることがわかります(たとえば、明示的に追加する必要はありません) )。 mvn clean dependency:tree
は、そのすべての後に何が入ってくるかを表示しますが、これはもっときちんとしています。
spring-batch-test
はtest
スコープでなければなりません。
最後に、私の問題は解決しました。プロジェクトを「既存のプロジェクトをワークスペースに」としてインポートしていました。これは完全に間違っていました。その後、「既存のMavenプロジェクト」を選択し、その後、いくつかの問題とすべてのエラーが削除されました。このプロセスでは、Mavenプロジェクトの新参者にとって重要なMavenの多くのことを学ぶことができました。
私のために働いた解決策は、プロジェクトを右クリックして-> Maven->プロジェクトを更新し、[OK]をクリックすることでした。
この問題に対する私の直接的な解決策:プロジェクトを右クリック-> 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>
Eclipseでプロジェクト名を右クリックし、-> Maven-> Mavenプロファイルの選択...を選択し、設定するMavenプロファイルにチェックマークを付けます。 [OK]をクリックすると、Eclipseはmaven設定をプロジェクトに自動的にインポートします。プロジェクトのプロパティを確認すると、Maven Dependencies Libraryが追加されていることがわかります。
ここからのこの答えは私を助けました:
プロジェクトのビルドパスを見て、参照されているライブラリがまだ存在するかどうかを確認する必要があります。したがって、プロジェクトを右クリックし、[プロパティ-> Javaビルドパス->ライブラリ]で、そこに記載されている場所にまだスプリングライブラリJARがあるかどうかを確認します。そうでない場合は、このダイアログ内でクラスパスに再度追加してください。
Eclipse STSでも同じ問題がありました。 POMのスコープを「提供」から「コンパイル」に変更すると問題が修正され、元に戻すとすべてが正常になりました。
私のために働いた唯一の解決策は、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>
プロジェクトを「既存のMavenプロジェクト」としてインポートすると、この問題が発生していました。
解決策:JREシステムライブラリのJava Build PathをWorkspace defailt JRE [jdk 1.8]に変更しました
手順:
プロジェクトを右クリック->ビルドパス->ビルドパスの構成->ライブラリタブ-> JREシステムライブラリをダブルクリック->ワークスペースへの変更JRE [jdk 1.8]
org.springframework.beans.factory.support.beannamegeneratorは私のエラーでした。 maven clean、maven buildなどを実行しましたが、これは有用ではなく、Eclipseインストールフォルダーに.m2フォルダーが存在しないことがわかりました。私はEclipseフォルダに貼り付けたEclipseフォルダの外側に.m2フォルダを見つけましたが、Eclipseでたまたまこれを実行しました:-
構成パスを開くmaven Java EE統合を選択しますMavenアーカイバがビルドディレクトリの下にファイルを生成し、適用して閉じます
私のプロジェクトは現在稼働しています。
私の場合、.m2/repository
内のjarを削除し、Maven->Update Maven Project
を実行する必要がありました
Jarファイルが破損しており、新しいjarファイルを削除してダウンロードすると問題が解決したようです。
pom.xmlがかなり良いと確信している場合は、pojectを更新するだけです。プロジェクト-Maven-プロジェクトを右クリックします。または単にalt + F5。