<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类无法从那里选择依赖。
答案 0 :(得分:34)
您需要按照以下几个步骤进行正确调试。
1)mvn clean dependency:tree
看一下输出,看看你得到了什么,并验证你的依赖是什么。
2)mvn clean compile
。这会失败吗?如果不是这意味着你只在Eclipse中得到错误?
你在评论中提到“我在上面运行两个命令,但是我收到了这个错误”。 mvn clean compile
有效吗?或者你也得到了错误?如果它工作,那它只是一个IDE问题,我会看看m2eclipse
插件。更好的是,使用IntelliJ作为免费版本比Eclipse具有更好的maven支持; - )
一些风格的东西......
人们经常在他们不需要时在他们的pom文件中添加太多依赖项。如果您查看mavenrepository.com中的几个链接,您可以看到spring-oxm
和spring-jdbc
都依赖于spring-core
,因此您无需明确添加(例如) )。 <{1}}会告诉你在所有这些之后会发生什么,但这更加整洁。
mvn clean dependency:tree
应为spring-batch-test
范围。
答案 1 :(得分:15)
最后我的问题得到了解决。我将项目导入为“现有项目进入工作区”。这完全错了。之后我选择了“现有Maven项目”,之后发生了一些小问题和所有错误。在这个过程中,我在Maven学到了很多东西,这对于Maven项目中的新人来说非常重要。
答案 2 :(得分:6)
我对此问题的直接解决方案: 右键单击项目 - &gt; Maven ---&gt;添加依赖关系==然后选择缺少依赖关系的名称或父名称
答案 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。如果没有,只需将它们重新添加到此对话框中的类路径中即可。
答案 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)
您可以按照以下步骤操作
删除存储库文件夹
C:/Users/user_name/.m2
然后使用IDE终端运行命令或在项目文件夹中打开cmd
mvn全新安装
重新启动ide
如果不能解决问题,请运行此命令
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)