Spring BeanDefinitionStoreException无法读取候选组件类
有人能告诉我如何解决这个问题吗 我已将问题缩小到pom.xml文件。我的项目可以工作,但是当我添加以下依赖项时,我得到了一个错误Spring BeanDefinitionStoreException无法读取候选组件类,spring,web,Spring,Web,有人能告诉我如何解决这个问题吗 我已将问题缩小到pom.xml文件。我的项目可以工作,但是当我添加以下依赖项时,我得到了一个错误 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.3.2.RELEASE&
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.3.2.RELEASE</version>
</dependency>
我不明白依赖项有什么问题,我需要spring数据jpa依赖项,稍后当我要添加一个使用ExtendsJParepository的dao时
提前感谢。您的类路径上很可能存在冲突的Spring依赖项。它可能是一个旧的
springasm
JAR
运行mvn依赖项:tree-Dincludes=:spring*:
并检查冲突。避免这些问题的最佳方法是在项目的dependencyManagement
部分中对spring框架bom
设置依赖项,如下所示
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.0.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
org.springframework
另一个原因是在Java8中使用Spring3。Java8需要Spring4
(不是针对这个问题,而是针对那些在谷歌上搜索错误消息的人)我正在使用spring 3.2.3.RELEASE。当我在maven编译器插件中将jdk.version从1.8改为1.6时,它开始工作了
<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>
org.apache.maven.plugins
maven编译器插件
2.3.2
${jdk.version}
${jdk.version}
在我的例子中,我的依赖项带来了与最新的spring core冲突的spring asm依赖项。因此,在依赖层次结构中搜索“asm”并将spring asm从拥有它的所有依赖中排除
我的情况是:
(一)
org.restlet.jee
org.restlet.ext.fileupload
2.3.1
org.springframework
春季asm
(二)
org.restlet.jee
org.restlet.ext.spring
2.1.2
org.springframework
春季asm
由于类文件损坏,我遇到了一个类似的错误——不知何故,CI构建在jar中有一个零字节的类文件(尽管存在一个非零内部类文件,其他的都可以)——100个类中有一个损坏的文件。这可能是一个磁盘空间问题,但需要一段时间才能意识到(因为该类位于Gradle为Spring启动项目构建的一个胖jar中的一个依赖项目jar中)。如果有人仍然面临此错误,并且正在参考Spring.io中的入门指南,不使用defaut包并将类文件放在一个新包下对我来说是个好办法 当我试图用
它起作用了如何解决这个问题
解决方案1:将弹簧版本更改为>=3.2.16
解决方案2:如果spring版本低于3.2.16,请不要使用诸如:@Service
@Controller
等注释。使用bean.xml定义一个bean,bean.xml不包含“
”。如果您必须使用
请输入其他bean.xml。我不确定是否理解。我是否必须将该依赖项添加到pom.xml中?我做了,但没用。。。如何从项目中删除spring asm?这是在
部分,而不是
部分。如果已识别依赖项,请向其添加
部分。在谷歌搜索排除后,这个答案出现了,非常相似:谢谢!,使用排除修复了该问题。我知道这有点无关,但我希望有人能帮忙。使用rest,我从数据库中获取数据。当我在前端使用$http.get和以下路径“/api/list”时,它不起作用。如果我使用“/Webtest3/api/list”,那么它可以工作(website3是项目的名称,我的主页加载了这个url localhost:8080/Webtest3/)。我如何配置它,使它接受/api/list而不是website3/api/list?谢谢你,你需要把它变成一个单独的问题,并给出你正在使用的技术的详细信息,以便合适的人能够看到它。如果您已解决此Maven问题,并且此答案对您有所帮助,请单击复选标记将其标记为“已接受”。这有助于将注意力集中在其他仍然没有答案的SO问题上。@user3058470运行mvn dependency:tree
,而不运行-Dincludes
,以查看完整输出。-Dincludes
标志只是一个过滤器,可以帮助您在所有输出中找到您感兴趣的依赖项。更多谷歌关键词。。。。。在尝试使用JDK8、Spring 3和lambda表达式时,我的特定错误是“读取候选组件类文件失败”,后面是ArrayIndexOutOfBoundsException@skylarsutton我认为谷歌不太注意评论。最好的做法可能是创建一个带有准确错误消息和公认正确答案的SO问题。在我的例子中,我使用的是Spring 3版本3.0.5。Release
和JDK 1.8版本1.8.0131
,它工作得非常完美,当我迁移到Spring3版本3.2.1.RELEASE
时,我的问题就来了。告诉您的Java1.8编译器以1.7为目标也可以。另请参见以下问题/答案:这对我有帮助。我有一些基本包名为com.example.test1.service1
的模块,另一个模块名为com.example.test2.service2
,第三个模块使用上述模块中的service1
和service2
,第三个模块的主类默认位于com.example.test3
下是导致错误的原因,所以我将其放在com.example
下,这对我来说非常有用!
<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>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.fileupload</artifactId>
<version>2.3.1</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-asm</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.spring</artifactId>
<version>2.1.2</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-asm</artifactId>
</exclusion>
</exclusions>
</dependency>