Я работаю с snmp в проекте весенней загрузки, и я получаю это сообщение об ошибке, когда ввожу маршрут в контроллер - PullRequest
0 голосов
/ 17 июня 2020

Контроллер

    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 (версия файла классов 53.0), эта версия среды выполнения Java распознает только версии файлов классов до 52.0 java .lang. UnsupportedClassVersionError: org / snmp4j / transport / DefaultUdpTransportMapping был скомпилирован более поздней версией Java Runtime (версия файла класса 53.0), эта версия Java Runtime распознает только версии файлов классов до 52.0

1 Ответ

0 голосов
/ 17 июня 2020

Текущая JRE не поддерживает данную версию файла класса для файла org/snmp4j/transport/DefaultUdpTransportMapping.

Вы можете обновить JDK / JRE до поддерживаемой версии или использовать версию библиотеки, предоставляющую этот класс org/snmp4j/transport/DefaultUdpTransportMapping, поддерживается JAVA 8.

С веб-сайта SMNP4j ,

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, которую вы используете используя, если они совместимы.

Версия файла класса 53.0 поддерживается Java 9 и выше.

...