【问题标题】:i work with snmp in spring boot project and i get this error message when i enter the route in the controller我在 Spring Boot 项目中使用 snmp,当我在控制器中输入路由时收到此错误消息
【发布时间】:2020-06-17 12:34:21
【问题描述】:

控制器

    import PFEproject.APIs.services.SNMPManager;


    @RestController
    @RequestMapping("/snmp")

    public class snmptestC {

        @GetMapping
        public void ResponseEntity()throws Exception {

            SNMPManager client = new SNMPManager("udp:127.0.0.1/161");
            client.start();
            String sysDescr = client.getAsString(new OID(".1.3.6.1.2.1.2.2.1.2"));
            System.out.println(sysDescr);

        }
      }

**snmpManager class**

    import org.snmp4j.*;
public class SNMPManager {
    private Snmp snmp = null;
    private String address = null;

    public SNMPManager(String address) {
        this.address = address;
    }

    public void start() throws IOException {
        TransportMapping transport = new DefaultUdpTransportMapping();
        snmp = new Snmp(transport);
        transport.listen();

    }

    public ResponseEvent get(OID oids[]) throws IOException {
        PDU pdu = new PDU();
        for (OID oid : oids) {
            pdu.add(new VariableBinding(oid));
        }
        pdu.setType(PDU.GET);
        ResponseEvent event = snmp.send(pdu, getTarget(), null);
        if(event != null) {
            return event;
        }
        throw new RuntimeException("GET timed out");
    }
    public String getAsString(OID oid) throws IOException {

        ResponseEvent event = get(new OID[] { oid });

        return event.getResponse().get(0).getVariable().toString();

    }
    private Target getTarget() {
        Address targetAddress = GenericAddress.parse(address);
        CommunityTarget target = new CommunityTarget();
        target.setCommunity(new OctetString("public"));
        target.setAddress(targetAddress);
        target.setRetries(2);
        target.setTimeout(1500);
        target.setVersion(SnmpConstants.version2c);
        return target;
    }

}

错误信息

出现意外错误(类型=内部服务器错误,状态=500)。 org/snmp4j/transport/DefaultUdpTransportMapping 已由更新版本的 Java Runtime(类文件版本 53.0)编译,此版本的 Java Runtime 仅识别最高 52.0 的类文件版本 java.lang.UnsupportedClassVersionError: org/snmp4j/transport/DefaultUdpTransportMapping 已由更新版本的 Java Runtime(类文件版本 53.0)编译,此版本的 Java Runtime 仅识别最高 52.0 的类文件版本

【问题讨论】:

  • 使用更高版本的 Java 运行?
  • 您使用的依赖版本不支持您的 JRE 版本。您使用的是哪个 JRE 版本?
  • 我使用 java 8 我应该安装 java 9 吗?

标签: spring spring-boot snmp4j


【解决方案1】:

当前的 JRE 不支持文件org/snmp4j/transport/DefaultUdpTransportMapping 的给定类文件版本。

您可以将 JDK/JRE 更新到受支持的版本,也可以使用提供此类 org/snmp4j/transport/DefaultUdpTransportMapping 的库版本,受 JAVA 8 支持。

来自 SMNP4j website

SNMP4J 3.1.0、SNMP4J-Agent 3.2.0 和 SNMP4J-AgentX 3.0.0 或更高版本需要 Java SE 9 或更高版本的运行时。 SNMP4J-SMI 和 SNMP4J-SMI-PRO 需要 Java 8 或更高版本的编译器和运行时。

如果是内部库,它们可以重新编译并与您正在使用的 java 版本一起使用,如果它们兼容的话。

Java 9 及更高版本支持类文件版本 53.0。

【讨论】:

    猜你喜欢
    • 2023-01-24
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2021-10-11
    相关资源
    最近更新 更多