Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当库作为依赖项添加时,Spring初始化不起作用_Java_Spring_Maven_Spring Mvc - Fatal编程技术网

Java 当库作为依赖项添加时,Spring初始化不起作用

Java 当库作为依赖项添加时,Spring初始化不起作用,java,spring,maven,spring-mvc,Java,Spring,Maven,Spring Mvc,我有一个库,它练习Spring,并在项目中运行时正确初始化它。当我启动另一个项目并将此库作为依赖项添加时,初始化失败。 代码如下: public class CBRepoFactory implements IRepoFactory { private UserActivityRepositoryService userActivityRepositoryService; private ItemInformationRepositoryService itemInf

我有一个库,它练习Spring,并在项目中运行时正确初始化它。当我启动另一个项目并将此库作为依赖项添加时,初始化失败。 代码如下:

    public class CBRepoFactory implements IRepoFactory {

    private UserActivityRepositoryService userActivityRepositoryService;

    private ItemInformationRepositoryService itemInformationRepositoryService;

    public CBRepoFactory() {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
        ctx.register(Config.class);
        ctx.scan("com.example.db.app");
        ctx.refresh();
        userActivityRepositoryService = ctx.getBean(UserActivityRepositoryService.class);
        itemInformationRepositoryService = ctx.getBean(ItemInformationRepositoryService.class);
        // ctx.close();
    }

    @Override
    public IRepoClient<UserActivity> getUserActivityRepositoryService() {
        // TODO Auto-generated method stub
        return this.userActivityRepositoryService;
    }

    @Override
    public IRepoClient<ItemInformation> getItemInformationRepositoryService() {
        // TODO Auto-generated method stub
        return this.itemInformationRepositoryService;
    }
   }
公共类CBRepoFactory实现IRepoFactory{
私有用户ActivityRepositoryService用户ActivityRepositoryService;
私有项目信息存储服务项目信息存储服务;
公共工厂(){
AnnotationConfigApplicationContext ctx=新的AnnotationConfigApplicationContext();
寄存器(Config.class);
ctx.scan(“com.example.db.app”);
ctx.refresh();
userActivityRepositoryService=ctx.getBean(userActivityRepositoryService.class);
itemInformationRepositoryService=ctx.getBean(itemInformationRepositoryService.class);
//ctx.close();
}
@凌驾
公共IRepoClient getUserActivityRepositoryService(){
//TODO自动生成的方法存根
返回此.userActivityRepositoryService;
}
@凌驾
公共IRepoClient getItemInformationRepositoryService(){
//TODO自动生成的方法存根
返回此.itemInformationRepositoryService;
}
}
这里是当作为依赖项添加时,我从项目中得到的异常

[main] INFO org.springframework.context.annotation.AnnotationConfigApplicationContext - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@3d71d552: startup date [Fri Aug 18 14:05:41 PDT 2017]; root of context hierarchy
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/io/support/PropertySourceFactory
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:301)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:270)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525)
    at com.ebay.db.app.clientImpl.CBRepoFactory.<init>(CBRepoFactory.java:23)
    at com.ebay.db.app.clientImpl.RepoFactoryBuilder.createFactory(RepoFactoryBuilder.java:11)
    at testDBClient.testProgram.main(testProgram.java:15)
Caused by: java.lang.ClassNotFoundException: org.springframework.core.io.support.PropertySourceFactory
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 9 more
[main]INFO org.springframework.context.annotation.AnnotationConfigApplicationContext-刷新org.springframework.context.annotation。AnnotationConfigApplicationContext@3d71d552:启动日期[2017年8月18日星期五14:05:41 PDT];上下文层次结构的根
线程“main”java.lang.NoClassDefFoundError中出现异常:org/springframework/core/io/support/PropertySourceFactory
位于org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:301)
位于org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228)
位于org.springframework.context.support.postprocessorregistrationlegate.invokeBeanDefinitionRegistryPostProcessors(postprocessorregistrationlegate.java:270)
位于org.springframework.context.support.postprocessorregistrationlegate.invokeBeanFactoryPostProcessors(postprocessorregistrationlegate.java:93)
位于org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525)
在com.ebay.db.app.clientImpl.CBRepoFactory.(CBRepoFactory.java:23)
在com.ebay.db.app.clientImpl.RepoFactoryBuilder.createFactory(RepoFactoryBuilder.java:11)上
位于testDBClient.testProgram.main(testProgram.java:15)
原因:java.lang.ClassNotFoundException:org.springframework.core.io.support.PropertySourceFactory
位于java.net.URLClassLoader.findClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于sun.misc.Launcher$AppClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
... 9更多

有人能帮我吗

前5行显示了您需要的所有信息,甚至是找到答案的地方:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/sukrishna/.m2/test2/org/slf4j/slf4j-simple/1.7.5/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/sukrishna/.m2/test2/org/slf4j/slf4j-log4j12/1.7.10/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
第1行说明了实际问题。多个SLF4J绑定。这意味着您有更多的记录器版本/实现尝试执行相同的操作,这会引发异常

第2行和第3行显示了冲突发生的位置

第4行告诉您在哪里查找有关错误的更多信息。如果你这样做了,你会看到他们的建议。如果pom中有多个实现(虽然我没有看到),可以排除第5行中没有的实现,如下所示:

<exclusions>
      <exclusion> 
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
      </exclusion>
      <exclusion> 
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
      </exclusion>
    </exclusions> 
这个对我来说很好,但是,如果它仍然遇到绑定问题,而不是使用bellow命令清除repo,它将保持为空并再次下载所有依赖项(清除后):

我不知道为什么会发生这种情况,你还没有发布你的pom,但我总是使用spring boot附带的slf4j来避免这些问题,因此不需要额外的依赖项。您可以这样实例化它:

private final Logger logger = LoggerFactory.getLogger(this.getClass());

希望有帮助

前5行显示了您需要的所有信息,甚至是找到答案的地方:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/sukrishna/.m2/test2/org/slf4j/slf4j-simple/1.7.5/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/sukrishna/.m2/test2/org/slf4j/slf4j-log4j12/1.7.10/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
第1行说明了实际问题。多个SLF4J绑定。这意味着您有更多的记录器版本/实现尝试执行相同的操作,这会引发异常

第2行和第3行显示了冲突发生的位置

第4行告诉您在哪里查找有关错误的更多信息。如果你这样做了,你会看到他们的建议。如果pom中有多个实现(虽然我没有看到),可以排除第5行中没有的实现,如下所示:

<exclusions>
      <exclusion> 
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
      </exclusion>
      <exclusion> 
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
      </exclusion>
    </exclusions> 
这个对我来说很好,但是,如果它仍然遇到绑定问题,而不是使用bellow命令清除repo,它将保持为空并再次下载所有依赖项(清除后):

我不知道为什么会发生这种情况,你还没有发布你的pom,但我总是使用spring boot附带的slf4j来避免这些问题,因此不需要额外的依赖项。您可以这样实例化它:

private final Logger logger = LoggerFactory.getLogger(this.getClass());

希望对您有所帮助

您是如何将第一个lib-jar添加到第二个项目的?如果是通过Maven,那么您是如何将第一个lib jar发布到Maven repo中的?请共享与SpringPublish相关的pom文件并发布pom。你在部署一场战争吗?发布两个POM。看起来版本不匹配。您有来自不同JAR的
slf4j simple
slf4j-log4j12
依赖项,它们都有
StaticLoggerBinder
类。除掉其中一个