0

我正在尝试使用 SNMP4j 在 java 中开发一个简单的 SNMP GET/SET 程序。我遵循了以下教程

http://www.developer-tricks.com/2012/11/how-to-get-started-with-snmp4j.html

https://blog.jayway.com/2010/05/21/introduction-to-snmp4j/

我还通读了“开始使用 SNMP4J”stackoverflow 线程。

到目前为止,我尝试复制的每个教程和程序都导致我在编译时出现“错误:java:java.lang.UnsupportedOperationException ”。我不知道为什么。我在上面列出的两个教程中都使用了确切的代码,并且在我编译时都导致了相同的错误。我已经阅读了涉及异常的其他线程,但没有发现任何与 SNMP4j 相关的内容,我阅读的很多内容都涉及使用 AsList 方法的列表,而该方法根本没有使用。

我试图运行的代码直接从我之前发布的“开发者技巧”链接中复制而来。唯一的区别是我将 OID 和 IP 地址更改为我自己机器的。

如果其他人在如何解决此异常方面有一些经验,我将非常感谢任何建议。

这是我尝试编译时的控制台输出。

信息:javac 10 用于编译 java 源信息:2018 年 3 月 29 日下午 4:19 - 编译完成,716 毫秒内出现 1 个错误和 0 个警告错误:java:java.lang.UnsupportedOperationException

这是我的代码,几乎与我链接到的“how-to-get-started-with-snmp4j”教程相同。

  public static void main(String[] args) throws IOException {
        try {
            Snmp snmp4j = new Snmp(new DefaultUdpTransportMapping());
            snmp4j.listen();
            Address add = new UdpAddress("192.168.1.10" + "/" + "161");
            CommunityTarget target = new CommunityTarget();
            target.setAddress(add);
            target.setTimeout(500);

            target.setRetries(3);

            target.setCommunity(new OctetString("public"));
            target.setVersion(SnmpConstants.version2c);

            PDU request = new PDU();
            request.setType(PDU.GET);
            OID oid = new OID(".1.3.6.1.4.1.34832.512.1.1.1.2");
            request.add(new VariableBinding(oid));

            PDU responsePDU = null;
            ResponseEvent responseEvent;
            responseEvent = snmp4j.send(request, target);

            if (responseEvent != null) {
                responsePDU = responseEvent.getResponse();
                if (responsePDU != null) {

                    Vector tmpv = responsePDU.getVariableBindings();
                    if (tmpv != null) {
                        for (int k = 0; k < tmpv.size(); k++) {
                            VariableBinding vb = (VariableBinding) tmpv.get(k);
                            String output = null;
                            if (vb.isException()) {

                                String errorstring = vb.getVariable().getSyntaxString();
                                System.out.println("Error:" + errorstring);
                            } else {
                                String sOid = vb.getOid().toString();
                                Variable var = vb.getVariable();
                                OctetString oct = new OctetString((OctetString) var);
                                String sVar = oct.toString();

                                System.out.println("success:" + sVar);
                            }


                        }

                    }

                }
            }

        } catch (IOException e) {

            e.printStackTrace();
        }
4

1 回答 1

0

原来该错误与 SNMP4j 无关。我编译的任何程序都会发生这种情况。

为了解决这个问题,我卸载了 JDK 10 并安装了 JDK 9。我正在使用 Intellij。不确定究竟是什么原因造成的,但卸载并重新安装是解决方案。

于 2018-03-30T19:34:35.347 回答