unix 在LinuxNetworkParams.getDomainName调用中查找NPE的原因

o3imoua4  于 2022-11-23  发布在  Unix
关注(0)|答案(2)|浏览(153)

我们在oshi版本6.1.6中的LinuxNetworkParams.getDomainName调用中看到了NPE。虽然我看不出任何原因。有人能帮助我解释为什么这会引发NPE吗?

Caused by: java.lang.NullPointerException
at oshi.software.os.linux.LinuxNetworkParams.getDomainName(LinuxNetworkParams.java:80) ~[oshi-core-6.1.6.jar!/:6.1.6]
at com.airwatch.common.diagnostics.DiagnosticCollector.fetchSystemConfiguration(DiagnosticCollector.java:148) ~[diagnostic-library-2.0.3.jar!/:?]

下面是该方法的代码:https://github.com/oshi/oshi/blob/oshi-parent-6.1.6/oshi-core/src/main/java/oshi/software/os/linux/LinuxNetworkParams.java#L79-L80

ukqbszuj

ukqbszuj1#

info.ai_canonname看起来像null,请尝试为ai_canonname添加空值检查或使用空值安全方式进行修剪,如StringUtils.trim()

public static String trim(final String str) {
    return str == null ? null : str.trim();
}
lfapxunr

lfapxunr2#

正如@Jishnu-Prathap在他们的answer中所说,info.ai_canonname是空的。
此值通常会传回“主机的正式名称”,以回应getaddrinfo()函数,其docs状态为:
如果hints.ai_flags包括AI_CANONNAME标志,则返回的列表中第一个addrinfo结构的ai_canonname字段被设置为指向主机的正式名称。
这可能表示服务器配置中存在错误;如果您保持相同的OSHI版本,修复“主机的正式名称”将阻止NPE。
然而,在OSHI的早期版本中,未能对该值进行空值检查是一个错误,但它是fixed in version 6.2.2,升级也将阻止NPE(但不会给予您一个规范的主机名,因为它不存在!)

相关问题