项目整合了websocket以后,打包多次都没有成功,原来是报错了,报错内容如下:

1Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2org.springframework.boot.SpringApplication.reportFailure(SpringApplication.java:837) 2020-03-18 08:20:02,192 [main] ERROR pringApplication - Application run failed 3org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class path resource [com/winmine/server/config/WebSocketConfig.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available 4 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1694) 5 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:573) 6 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) 7 at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) 8 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 9 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) 10 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) 11 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759) 12 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) 13 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548) 14 at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) 15 at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386) 16 at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) 17 at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127) 18 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) 19 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117) 20 at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108) 21 at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190) 22 at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132) 23 at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246) 24 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) 25 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) 26 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 27 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) 28 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) 29 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) 30 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 31 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 32 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 33 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 34 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 35 at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 36 at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 37 at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 38 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) 39 at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365) 40 at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273) 41 at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238) 42 at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159) 43 at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379) 44 at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340) 45 at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125) 46 at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413) 47Caused by: java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available 48 at org.springframework.util.Assert.state(Assert.java:73) 49 at org.springframework.web.socket.server.standard.ServerEndpointExporter.afterPropertiesSet(ServerEndpointExporter.java:107) 50 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1753) 51 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1690) 52 ... 42 more 53org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:250) 2020-03-18 08:20:02,195 [main] ERROR stContextManager - Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener@1725dc0f] to prepare test instance [com.example.demo.DemoApplicationTests@497b560e] 54java.lang.IllegalStateException: Failed to load ApplicationContext 55 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125) 56 at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108) 57 at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190) 58 at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132) 59 at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246) 60 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) 61 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) 62 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 63 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) 64 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) 65 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) 66 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 67 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 68 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 69 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 70 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 71 at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 72 at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 73 at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 74 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) 75 at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365) 76 at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273) 77 at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238) 78 at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159) 79 at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379) 80 at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340) 81 at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125) 82 at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413) 83Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class path resource [com/winmine/server/config/WebSocketConfig.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available 84 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1694) 85 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:573) 86 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) 87 at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) 88 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 89 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) 90 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) 91 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759) 92 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) 93 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548) 94 at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) 95 at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386) 96 at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) 97 at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127) 98 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) 99 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117) 100 ... 27 more 101Caused by: java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available 102 at org.springframework.util.Assert.state(Assert.java:73) 103 at org.springframework.web.socket.server.standard.ServerEndpointExporter.afterPropertiesSet(ServerEndpointExporter.java:107) 104 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1753) 105 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1690) 106 ... 42 more 107[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.199 s <<< FAILURE! - in com.example.demo.DemoApplicationTests 108[ERROR] getDData(com.example.demo.DemoApplicationTests) Time elapsed: 0.002 s <<< ERROR! 109java.lang.IllegalStateException: Failed to load ApplicationContext 110Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class path resource [com/winmine/server/config/WebSocketConfig.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available 111Caused by: java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available 112 113[INFO] 114[INFO] Results: 115[INFO] 116[ERROR] Errors: 117[ERROR] DemoApplicationTests.getDData » IllegalState Failed to load ApplicationContext 118[INFO] 119[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0 120[INFO] 121[INFO] ------------------------------------------------------------------------ 122[INFO] BUILD FAILURE 123[INFO] ------------------------------------------------------------------------
View Code
仔细看报错内容的话,其实已经很明显,比如这几行:
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.199 s <<< FAILURE! - in com.example.demo.DemoApplicationTests
[ERROR] getDData(com.example.demo.DemoApplicationTests) Time elapsed: 0.002 s <<< ERROR!
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class path resource [com/winmine/server/config/WebSocketConfig.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available
Caused by: java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available
需要在test类中加
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 就可以了,楼主的如下:

问题完美解决。