亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

springBoot maven 打包jar報錯

springBoot maven 打包jar報錯

呼啦一陣風 2019-03-01 10:31:10
代碼可以正常運行,websocket也是正常工作,但打包成jar就會報如下錯誤 Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. 2017-09-18 10:33:04,779:ERROR main (SpringApplication.java:839) - Application startup failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class path resource [com/zenhome/cloud2cloud/service/gizwits_adapter/websocket/config/WebSocketCon fig.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:754) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) ~[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:111) [spring-boot-test-1.4.2.RELEASE.jar:1.4.2.RELEASE] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:189) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:131) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.12.jar:4.12] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) [junit-4.12.jar:4.12] at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.junit.runners.ParentRunner.run(ParentRunner.java:363) [junit-4.12.jar:4.12] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) [spring-test-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283) [surefire-junit4-2.18.1.jar:2.18.1] at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173) [surefire-junit4-2.18.1.jar:2.18.1] at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153) [surefire-junit4-2.18.1.jar:2.18.1] at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128) [surefire-junit4-2.18.1.jar:2.18.1] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203) [surefire-booter-2.18.1.jar:2.18.1] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155) [surefire-booter-2.18.1.jar:2.18.1] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) [surefire-booter-2.18.1.jar:2.18.1] Caused by: java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available at org.springframework.util.Assert.state(Assert.java:392) ~[spring-core-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.web.socket.server.standard.ServerEndpointExporter.afterPropertiesSet(ServerEndpointExporter.java:102) ~[spring-websocket-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1642) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] ... 41 more pom.xml里加的是 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> websocketconfig.java @Configuration public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter(){ return new ServerEndpointExporter(); } } MyWebsocket.java package com.zenhome.cloud2cloud.service.gizwits_adapter.websocket.controller; import com.alibaba.fastjson.JSONObject; import com.zenhome.cloud2cloud.service.gizwits_adapter.bean.DevEvent; import org.springframework.stereotype.Component; import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.net.URLDecoder; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; /** * Created by Administrator on 2017/7/26.n */ @ServerEndpoint(value="/websocket") @Component public class MyWebSocket { //靜態變量,用來記錄當前在線連接數,應該把它設計成線程安全的 private static int onlineCount = 0; private final int NUMBER = 10000; private static ConcurrentHashMap<String,Session> mapUser = new ConcurrentHashMap<String, Session>(); private static ConcurrentHashMap<Session,String> userMap = new ConcurrentHashMap<Session, String>(); //concurrent包的線程安全set,用來存放每個客戶端對應的MyWebSocket對象 private static CopyOnWriteArrayList<MyWebSocket> webSocketSet = new CopyOnWriteArrayList<MyWebSocket>(); //與某個客戶端的連接會話,需要通過它來給客戶端發送數據 private Session session; /** * 連接建立成功調用的方法 */ @OnOpen public void onOpen(Session session) throws IOException, InterruptedException { String mac; String mac_subkey; int subkey; subkey = (int)(Math.random()*NUMBER); this.session = session; mac = session.getQueryString().split("=")[1]; System.out.println(mac = URLDecoder.decode(mac,"UTF-8")); mac_subkey = mac +"."+ subkey; System.out.println("mac_subkey = "+mac_subkey); session.getUserProperties().toString(); //將用戶名和連接的session存放在在線集合中 userMap.put(session,mac_subkey); mapUser.put(mac_subkey,session); System.out.println("mapUser :"+mapUser); webSocketSet.add(this);//加入set中 addOnlineCount();//在線數加1 System.out.println("有新連接加入!當前在線人數為"+getOnlineCount()); sendMessage("歡迎"+mac_subkey+"加入!"); } /** * 連接關閉調用的方法 */ @OnClose public void onClose(CloseReason reason) { String name = userMap.get(session); //在線列表移除關閉的用戶名 userMap.remove(session); mapUser.remove(name); webSocketSet.remove(this);//從set中刪除 subOnlineCount();//在線數減1 System.out.println("有一連接關閉!當前在線人數為"+getOnlineCount()); System.out.println("關閉一個websocket由于"+reason.getReasonPhrase()); } /** * 收到客戶端消息后調用的方法 * @param message 客戶端發送過來的消息 */ @OnMessage public void onMessage(String message, Session session) throws IOException, InterruptedException { System.out.println("來自客戶端的消息:"+message); sendMessage(message); } /** * 實時消息轉發 * @param message * @throws IOException * @throws InterruptedException */ public void message(DevEvent message) throws IOException, InterruptedException { System.out.println("---------"+message.getMac()); System.out.println("message.getData() AlarmZone = "+message.getData().getString("AlarmZone")); System.out.println("message.getData() alarming = "+message.getData().getString("alarming")); System.out.println("message.getData() Arm_Disarm = "+message.getData().getString("Arm_Disarm")); JSONObject jsonObject = new JSONObject(); if (message.getData().getString("AlarmZone").equals("1")){ jsonObject.put("AlarmZone","警報!門鎖有人闖入"); } else if (message.getData().getString("AlarmZone").equals("2")){ jsonObject.put("AlarmZone","警報!大廳有人闖入"); } jsonObject.put("Arm_Disarm",message.getData().getString("Arm_Disarm")); jsonObject.put("mac",message.getMac()); System.out.println("alarmInfo ="+jsonObject); for (String key : mapUser.keySet()){ String[] device_mac = key.split("\\."); if(device_mac[0].equals(message.getMac())){ mapUser.get(key).getBasicRemote().sendText(jsonObject.toString() + "\n"); } } } /** * 發生錯誤時調用 */ @OnError public void onError(Session session, Throwable error) { System.out.println("發生錯誤"); error.printStackTrace(); } public void sendMessage(String message) throws IOException,InterruptedException { this.session.getBasicRemote().sendText(message); } public static synchronized int getOnlineCount(){ return onlineCount; } public static synchronized void addOnlineCount(){ MyWebSocket.onlineCount++; } public static synchronized void subOnlineCount(){ MyWebSocket.onlineCount--; } } 請問一下是什么原因導致打包失???感謝感謝
查看完整描述

3 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

出現這個問題主要是因為打包package遇到test會沖突(沖突解釋不準確),在打包的時候跳過test就可以了
mvn package -DskipTests

查看完整回答
反對 回復 2019-03-01
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

我也遇到該問題,不知如何解決

查看完整回答
反對 回復 2019-03-01
  • 3 回答
  • 0 關注
  • 1191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號