為什么我這 bean 的路徑老是說找不到?
public?class?UnitTestBase?{ ????private?ClassPathXmlApplicationContext?context; ????private?String?springXmlpath; ????public?UnitTestBase()?{} ????public?UnitTestBase(String?springXmlpath)?{ ????????this.springXmlpath?=?springXmlpath; ????} ????@Before ????public?void?before()?{ ????????if?(StringUtils.isEmpty(springXmlpath))?{ ????????????springXmlpath?=?"classpath*:spring-*.xml"; ????????} ????????try?{ ????????????context?=?new?ClassPathXmlApplicationContext(springXmlpath.split("[,\\s]+")); ????????????context.start(); ????????}?catch?(BeansException?e)?{ ????????????e.printStackTrace(); ????????} ????} ????@After ????public?void?after()?{ ????????context.destroy(); ????} ????@SuppressWarnings("unchecked") ????protected?<T?extends?Object>?T?getBean(String?beanId)?{ ????????try?{ ????????????return?(T)context.getBean(beanId); ????????}?catch?(BeansException?e)?{ ????????????e.printStackTrace(); ????????????return?null; ????????} ????} ????protected?<T?extends?Object>?T?getBean(Class<T>?clazz)?{ ????????try?{ ????????????return?context.getBean(clazz); ????????}?catch?(BeansException?e)?{ ????????????e.printStackTrace(); ????????????return?null; ????????} ????} }
public?class?BeanScope?{ ????public?void?say(){ ????????System.out.println("當(dāng)前對(duì)象為:"+this.hashCode()); ????} }
@RunWith(BlockJUnit4ClassRunner.class) public?class?TestBeanScope?extends?UnitTestBase{ ????public?TestBeanScope(){ ????????super("classpath*:spring-beanscope.xml"); ????} ????@Test ????public?void?testSay(){ ????????BeanScope?beanScope?=?super.getBean("beanScope"); ????????beanScope.say(); ????} }
<?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns="http://www.springframework.org/schema/beans" ???????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ???????xsi:schemaLocation="http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans.xsd"> ????<bean?id="beanScope"?class="main.java.com.bean.BeanScope"?scope="singleton"></bean> </beans>
九月 30, 2017 1:31:08 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@558fbefd: startup date [Sat Sep 30 01:31:08 CST 2017]; root of context hierarchy
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'beanScope' available
?? ?at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687)
?? ?at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1207)
?? ?at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)
?? ?at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
?? ?at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1078)
?? ?at com.testJunit.UnitTestBase.getBean(UnitTestBase.java:44)
?? ?at test.java.com.bean.TestBeanScope.testSay(TestBeanScope.java:20)
?? ?at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
?? ?at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
?? ?at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
?? ?at java.lang.reflect.Method.invoke(Method.java:606)
?? ?at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
?? ?at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
?? ?at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
?? ?at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
?? ?at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
?? ?at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
?? ?at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
?? ?at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
?? ?at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
?? ?at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
?? ?at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
?? ?at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
?? ?at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
?? ?at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
?? ?at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
?? ?at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
?? ?at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
?? ?at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
?? ?at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
?? ?at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
九月 30, 2017 1:31:08 上午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@558fbefd: startup date [Sat Sep 30 01:31:08 CST 2017]; root of context hierarchy
java.lang.NullPointerException
?? ?at test.java.com.bean.TestBeanScope.testSay(TestBeanScope.java:21)
?? ?at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
?? ?at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
?? ?at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
?? ?at java.lang.reflect.Method.invoke(Method.java:606)
?? ?at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
?? ?at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
?? ?at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
?? ?at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
?? ?at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
?? ?at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
?? ?at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
?? ?at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
?? ?at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
?? ?at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
?? ?at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
?? ?at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
?? ?at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
?? ?at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
?? ?at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
?? ?at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
?? ?at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
?? ?at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
?? ?at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
?? ?at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Process finished with exit code -1
2018-04-27
這么說吧 class=“***” ***這個(gè)東西是你的包名+所用到的類名?
我給你看下我的代碼
這是我自己在看的時(shí)候,工具類的源碼。在package關(guān)鍵字后面的就是這個(gè)java文件的包名,類名就是你這個(gè)文件的類名 然后***里面寫的是包名.類名
你比較下寫法。在寫***的時(shí)候不要按照文件夾這樣寫,就直接看java文件自己首部的包的信息
2017-09-30
那算是maven的文件規(guī)則吧 ?, 不屬于路徑里邊
2017-09-30
Bean 路徑里的 ?main/Java/去掉