Spring BeanDefinitionStoreException无法读取候选组件类

Spring BeanDefinitionStoreException无法读取候选组件类,spring,web,Spring,Web,有人能告诉我如何解决这个问题吗 我已将问题缩小到pom.xml文件。我的项目可以工作,但是当我添加以下依赖项时,我得到了一个错误 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.3.2.RELEASE&

有人能告诉我如何解决这个问题吗

我已将问题缩小到pom.xml文件。我的项目可以工作,但是当我添加以下依赖项时,我得到了一个错误

    <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>