如何使用java获取操作系统详细信息

如何使用java获取操作系统详细信息,java,Java,我知道我们可以使用System.getProperty(“os.name”)以获取操作系统名称。但由于某些原因,有人设置了一个名为JAVA\u TOOL\u OPTIONS=“-Dos.name=windows7”的环境变量,这导致无法获取原始操作系统名称,而总是将操作系统名称作为windows7获取 我们有办法获得原始操作系统的详细信息吗?您可以使用Apache Commons Lang,类名为SystemUtils。您可以使用下面的代码 String osName = SystemUtils

我知道我们可以使用
System.getProperty(“os.name”)
以获取操作系统名称。但由于某些原因,有人设置了一个名为
JAVA\u TOOL\u OPTIONS=“-Dos.name=windows7”
的环境变量,这导致无法获取原始操作系统名称,而总是将操作系统名称作为windows7获取


我们有办法获得原始操作系统的详细信息吗?

您可以使用Apache Commons Lang,类名为
SystemUtils
。您可以使用下面的代码

String osName = SystemUtils.OS_NAME;
System.out.println("OS NAME: " + osName);
您必须在类路径中添加apachecommons Lang

如果什么都不起作用,那么您必须逐个执行特定于操作系统的命令,直到得到正确的结果。但这不是正确的方法,它只是一种变通方法

对于Windows,执行
ver


对于Linux,执行
cat/etc/*-release
lsb_release-a

这是否回答了您的问题?不幸的是,没有。我这里的问题是System.getProperty由于环境变量JAVA_TOOL_OPTIONS而无法正常运行。如果这实际上是Windows,并且“有人”只是伪造版本而不是平台,
os。version
是MS内部版本,大部分(但不完全)是映射到
os.name
值。我刚刚看到了SystemUtils的实现。这里我们还使用System.getProperty<代码>私有静态字符串getSystemProperty(最终字符串属性){try{return System.getProperty(property);}catch(最终SecurityException ex){//不允许查看此属性System.err.println(“捕获了读取系统属性的SecurityException”)+property+“;SystemUtils属性值将默认为null。”);return null;}谢谢,但我这里的问题是,由于环境变量JAVA_TOOL_OPTIONS,System.getProperty行为不正确。如果可能,能否删除
JAVA_TOOL_OPTIONS=“-Dos.name=Windows 7”
从环境变量中选择,并在java中检查系统属性,以确定问题所在?是。。如果我删除了,那么这就行了。。但不幸的是,我们无法删除此变量,因为其他一些软件需要此项。@NagarajuChitimilla然后从全局环境中删除该属性,并仅为确实需要它的特定程序设置它。