如何解决UnsupportedOperationException?

时间:2018-03-29 20:36:40

标签: java unsupportedoperation

我正在尝试使用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方法的列表,而这些方法根本没有使用。

我尝试运行的代码是直接从我之前发布的'developer-tricks'链接中复制的。唯一的区别是我将OID和IP地址更改为我自己机器的地址。

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

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

  

信息:javac 10用于编译java源代码   信息:3/29/2018 4:19 PM - 编译完成,出现1错误和   716ms内出现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();
        }

1 个答案:

答案 0 :(得分:0)

原来这个错误与SNMP4j无关。它发生在我编译的任何程序中。

为了解决这个问题,我卸载了JDK 10并安装了JDK 9。我在使用Intellij。不确定是什么导致了这种情况,但卸载和重新安装是解决方案。