Spring mvc 嵌套的异常是javax.comm中的java.lang.NoClassDefFoundError,在部署WAR时Srping MVC?

Spring mvc 嵌套的异常是javax.comm中的java.lang.NoClassDefFoundError,在部署WAR时Srping MVC?,spring-mvc,tomcat,serial-port,javax.comm,Spring Mvc,Tomcat,Serial Port,Javax.comm,我试图通过javax.comm WINDOWS 32读取COM端口,它是在Spirng MVC中实现的。是的,如果我在Tomcat上部署引发错误的战争,我会从事开发工作 我的错误日志: org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web

我试图通过javax.comm WINDOWS 32读取COM端口,它是在Spirng MVC中实现的。是的,如果我在Tomcat上部署引发错误的战争,我会从事开发工作

我的错误日志:

    org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'appConfig': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: void org.springframework.transaction.annotation.AbstractTransactionManagementConfiguration.setConfigurers(java.util.Collection); nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.gvveg.sales.SalesController] for bean with name 'salesController' defined in file [C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\gvveg\WEB-INF\classes\com\gvveg\sales\SalesController.class]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: javax/comm/SerialPortEventListener
Related cause: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.gvveg.sales.SalesController] for bean with name 'salesController' defined in file [C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\gvveg\WEB-INF\classes\com\gvveg\sales\SalesController.class]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: javax/comm/SerialPortEventListener
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: void org.springframework.transaction.annotation.AbstractTransactionManagementConfiguration.setConfigurers(java.util.Collection); nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.gvveg.sales.SalesController] for bean with name 'salesController' defined in file [C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\gvveg\WEB-INF\classes\com\gvveg\sales\SalesController.class]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: javax/comm/SerialPortEventListener
这是我的请求映射

@RequestMapping(value = "refreshWeight", method = RequestMethod.GET)
    public ResponseEntity<String> refreshWeight(){
        portList = CommPortIdentifier.getPortIdentifiers();

        while (portList.hasMoreElements()) {
            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                 if (portId.getName().equals("COM7")) {
                     SimpleRead();
                }
            }
        }

        return new ResponseEntity<String> ( WEIGHT.trim(), HttpStatus.OK);
    }
最后介绍了seralEvent方法

public void serialEvent(SerialPortEvent event) {
    switch(event.getEventType()) {
    case SerialPortEvent.BI:
    case SerialPortEvent.OE:
    case SerialPortEvent.FE:
    case SerialPortEvent.PE:
    case SerialPortEvent.CD:
    case SerialPortEvent.CTS:
    case SerialPortEvent.DSR:
    case SerialPortEvent.RI:
    case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
        break;
    case SerialPortEvent.DATA_AVAILABLE:
        byte[] readBuffer = new byte[20];

        try {
            while (inputStream.available() > 0) {
                int numBytes = inputStream.read(readBuffer);
            }
            System.out.println(new String(readBuffer));
            WEIGHT = new String(readBuffer);
        } catch (IOException e) {System.out.println(e);}
        break;
    }   
}
java.lang.NoClassDefFoundError:javax/comm/SerialPortEventListener

当前执行时已存在搜索的类定义 类已编译,但无法再找到该定义


您的Tomcat环境或WAR文件缺少该类。

是的,您是对的。但它在SerialPortEventListener的内置类上抛出错误。从log:java.lang.NoClassDefFoundError:javax/comm/SerialPortEventListener它不是内置的,没有必须启用的设置,或者它位于应用程序无法看到的类加载器中。我不知道Tomcat是怎么做的。我将把这个标签添加到问题中。它在开发中的作用是什么?这也是一个Tomcat实例吗?或者别的什么?仅Tomcat实例
public void serialEvent(SerialPortEvent event) {
    switch(event.getEventType()) {
    case SerialPortEvent.BI:
    case SerialPortEvent.OE:
    case SerialPortEvent.FE:
    case SerialPortEvent.PE:
    case SerialPortEvent.CD:
    case SerialPortEvent.CTS:
    case SerialPortEvent.DSR:
    case SerialPortEvent.RI:
    case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
        break;
    case SerialPortEvent.DATA_AVAILABLE:
        byte[] readBuffer = new byte[20];

        try {
            while (inputStream.available() > 0) {
                int numBytes = inputStream.read(readBuffer);
            }
            System.out.println(new String(readBuffer));
            WEIGHT = new String(readBuffer);
        } catch (IOException e) {System.out.println(e);}
        break;
    }   
}