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

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

不滿足的依賴關系 - 創建 Bean 時出錯

不滿足的依賴關系 - 創建 Bean 時出錯

大話西游666 2022-06-23 15:49:46
我按照本教程創建了簡單的 JMS 相關應用程序,但我不斷收到異常(下面粘貼了堆棧跟蹤)我嘗試查看其他類似的線程,并且在許多地方看起來人們要求在界面中添加 @Repository 注釋,但我的界面沒有擴展任何存儲庫。我的代碼如下所示:JmsClient.javapublic interface JmsClient {    public void send(String msg);    public String receive();}JmsClientImpl.java@Servicepublic class JmsClientImpl implements JmsClient{    @Autowired    JmsConsumer jmsConsumer;    @Autowired    JmsProducer jmsProducer;    @Override    public void send(String msg) {        jmsProducer.send(msg);    }    @Override    public String receive() {        return jmsConsumer.receive();    }}JmsConsumer.java@Componentpublic class JmsConsumer {    @Autowired    JmsTemplate jmsTemplate;    @Value("${jms.queue.destination}")    String destinationQueue;    public String receive(){        return (String)jmsTemplate.receiveAndConvert(destinationQueue);     }}WebController.java@RestControllerpublic class WebController {    @Autowired    JmsClient jsmClient;    @RequestMapping(value="/produce")    public String produce(@RequestParam("msg")String msg){        jsmClient.send(msg);        return "Done";    }    @RequestMapping(value="/receive")    public String receive(){        return jsmClient.receive();    }}JmsProducer.java@Componentpublic class JmsProducer {    @Autowired    JmsTemplate jmsTemplate;    @Value("${jms.queue.destination}")    String destinationQueue;    public void send(String msg){        jmsTemplate.convertAndSend(destinationQueue, msg);    }}
查看完整描述

1 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

您遇到的問題是 Spring 無法實例化@Autowired您指定的類。


它無法實例化這些類的原因是它找不到它們所依賴的類,如堆棧跟蹤底部所示:


Caused by: java.lang.NoClassDefFoundError: javax/jms/JMSContext

    at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_191]

    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_191]

    at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_191]

    at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:668) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]

    ... 62 common frames omitted

Caused by: java.lang.ClassNotFoundException: javax.jms.JMSContext

    at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_191]

    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_191]

    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_191]

    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_191]

    ... 66 common frames omitted

如此處所述,這意味著您需要獲取可供應用程序加載的 JMS 庫。


在您的 pom 中,您沒有指定spring-jms要使用的版本,因此您獲得的版本可能不包含您需要的庫。


您可以更新您的 pom 以獲得最新版本,如下所述:


<!-- https://mvnrepository.com/artifact/org.springframework/spring-jms -->

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-jms</artifactId>

    <version>5.1.5.RELEASE</version>

</dependency>

或者,您可以通過將以下內容添加到您的 pom(在此處找到)來顯式包含 JMS 庫:


<!-- https://mvnrepository.com/artifact/javax.jms/javax.jms-api -->

<dependency>

    <groupId>javax.jms</groupId>

    <artifactId>javax.jms-api</artifactId>

    <version>2.0.1</version>

</dependency>

希望其中之一將允許 Spring 實例化所有 bean 并啟動應用程序。


查看完整回答
反對 回復 2022-06-23
  • 1 回答
  • 0 關注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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