我正在尝试使用 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();
}