如何解决不支持的exception



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

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

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

我还阅读了"从snmp4j" stackoverflow线程开始的"入门"。

到目前为止,我尝试复制以使我开始的每个教程和程序都导致" 错误:Java:Java.lang.unsupportedoperationException "。我不知道为什么。我在上面列出的两个教程中都使用了确切的代码,并且在编译时都会造成相同的错误。我已经阅读了涉及异常的其他线程,但还没有找到与SNMP4J相关的内容,我阅读的很多内容都涉及使用Aslist方法与列表有关的内容,该方法根本不使用。

代码IM试图运行的代码是直接从我之前发布的"开发人员 - 编剧"链接中复制的。唯一的区别是我将OID和IP地址更改为我自己的机器的地址。

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

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

信息:Javac 10用于编译Java源 信息:3/29/2018 4:19 PM-编译以1个错误完成,并且 0 716ms中的警告错误:Java: java.lang.unsupportedoperationException

这是我的代码,几乎与我链接到的'how-to-get-start-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();
        }

事实证明,错误与SNMP4J无关。我编译的任何程序都发生了。

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

最新更新