`
雨过天晴0521
  • 浏览: 159364 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转] 关于System.getProperty("os.arch")

    博客分类:
  • java
 
阅读更多
Java's "os.arch" System Property is the Bitness of the JRE, NOT the Operating System
By Mark Kolich on October 19, 2009 11:15 AM | No TrackBacks

原文:http://mark.koli.ch/2009/10/javas-osarch-system-property-is-the-bitness-of-the-jre-not-the-operating-system.html
参考:http://lopica.sourceforge.net/os.html

If you ever use Java to check if a system is 32 or 64-bit, you should know that Java's "os.arch" system property returns the bitness of the JRE, not the OS itself.  Sites like this are WRONG; any resource that claims Java's "os.arch" property returns the real "architecture of the OS" is lying.  Case in point, I recently ran this tiny program on a 64-bit Windows 7 machine, with a 32-bit JRE:

import com.sun.servicetag.SystemEnvironment;

public class OSArchLies {
  
  public static void main(String[] args) {
    
    // Will say "x86" even on a 64-bit machine
    // using a 32-bit Java runtime
    SystemEnvironment env =
        SystemEnvironment.getSystemEnvironment();
    final String envArch = env.getOsArchitecture();
    
    // The os.arch property will also say "x86" on a
    // 64-bit machine using a 32-bit runtime
    final String propArch = System.getProperty("os.arch");
    
    System.out.println( "getOsArchitecture() says => " + envArch );
    System.out.println( "getProperty() says => " + propArch );
    
  }

}


The output from this tiny app on a 64-bit box:

#/> java OSArchLies
getOsArchitecture() says => x86
getProperty() says => x86

In this case, one would expect to see something like "x86_64" or "amd64" instead of just "x86".  Bottom line, don't believe what you read online about "os.arch" and other Java system properties.  They are usually properties of the JRE/JDK itself, and not necessarily the real properties of the underlying OS or architecture.  If you need to check if a system is actually 32 or 64-bit, you should look elsewhere in the system registry or write your own native app and call it from Java.http://mark.koli.ch/2009/10/reliably-checking-os-bitness-32-or-64-bit-on-windows-with-a-tiny-c-app.html
分享到:
评论

相关推荐

    Java中System.getProperty的使用

    在Java编程语言中,`System.getProperty`方法是一个非常实用且重要的功能,用于获取与系统相关的属性信息。这些属性包括但不限于操作系统、Java运行环境版本、安装目录等关键信息,对于理解和调试程序运行环境有着不...

    java项目路径(相关信息)的取得

    - 示例代码:`System.getProperty("os.arch")` - 应用场景:确定应用是否能在当前架构下运行。 22. **`os.version`** - 描述:操作系统版本。 - 示例代码:`System.getProperty("os.version")` - 应用场景:...

    Java的System.getProperty()方法获取大全

    `System.getProperty()`方法是Java中的一个核心功能,它用于获取Java虚拟机(JVM)和操作系统相关的系统属性。这些属性提供了关于运行Java程序的环境的详细信息,包括Java版本、供应商信息、JRE目录、操作系统详情等...

    java 实现对当前操作系统的判断

    String osArch = System.getProperty("os.arch"); System.out.println("操作系统版本:" + osVersion); System.out.println("操作系统架构:" + osArch); ``` 在`judgeOS`项目中,可能包含了更复杂的逻辑,比如处理...

    java设置http代理

    System.out.println("操作系统架构:" + props.getProperty("os.arch")); System.out.println("操作系统版本:" + props.getProperty("os.version")); System.out.println("文件分隔符:" + props.getProperty("file...

    java获取系统参数规格

    System.out.println("操作系统架构:\n" + System.getProperty("os.arch")); ``` 此属性提供了操作系统的基本架构信息,例如`x86`、`amd64`等。 #### 14. 获取操作系统版本 ```java System.out.println("操作系统...

    java获取操作系统版本代码

    String arch = System.getProperty("os.arch"); System.out.println("操作系统名称: " + osName); System.out.println("操作系统版本: " + osVersion); System.out.println("处理器架构: " + arch); ...

    Java中通过System.getProperties()获取系统参数测试.docx

    - **操作系统的构架** (`os.arch`):显示了当前操作系统的架构类型,如“amd64”、“i386”等。 - **操作系统的版本** (`os.version`):指出了当前操作系统的版本号。 - **文件分隔符** (`file.separator`):给出了...

    Java获取系统信息

    String os = System.getProperty("os.name"); String osUser = System.getProperty("user.name"); if (os != null && os.startsWith("Windows")) { try { String command = "cmd.exe /c ipconfig /all"; ...

    Java获取客户端信息代码

    System.out.println(System.getProperty("os.arch")); // 操作系统架构 ``` ### 四、获取HTTP请求的详细信息 Java提供了多种方法来获取HTTP请求的详细信息,包括请求方法、请求URI、服务器信息、客户端IP地址等。 ...

    抓取网页数据函数

    在现代软件开发过程中,尤其是涉及到跨平台的应用程序时,了解并掌握如何利用 Java 的 `System.getProperty()` 方法来获取运行时系统的相关信息是非常重要的。这不仅可以帮助开发者更好地调试代码,还可以在不同环境...

    JSP获取客户端IP地址浏览器版本操作系统.pdf

    System.getProperty("os.arch"); // 操作系统架构 ``` 总结 在JSP中,获取客户端的IP地址、浏览器版本和操作系统信息是非常重要的。我们可以使用`request.getRemoteAddr()`方法来获取客户端的IP地址,但是需要注意...

    Java获取客户端代码大全

    System.out.println(System.getProperty("os.arch")); ``` 这些方法可以直接获取到当前运行环境的操作系统名称、版本和架构信息。 ### 三、获取请求相关的信息 #### 1. 请求方法 ```java System.out.println...

    JSP获取客户端的浏览器和操作系统信息.pdf

    String osArch = System.getProperty("os.arch"); // 操作系统架构 ``` 这些信息可以用于调试或者记录日志等用途。 #### 三、其他相关信息获取 在JSP页面中,除了以上提到的信息之外,我们还可以通过`...

    java获取电脑信息demo

    return System.getProperty("os.arch"); } } ``` 此外,还可以使用`java.lang.Runtime`类获取关于Java虚拟机(JVM)的信息,如总内存、空闲内存、最大可用内存等: ```java import java.lang.Runtime; public ...

    Java获取当前操作系统的信息实例代码

    例如,`System.getProperty("os.arch")`返回的是操作系统架构,如"x86"或"amd64"。这些属性对于处理与硬件相关的任务或者编写特定于平台的代码非常有用。 4. 文件和路径相关属性:Java还提供了获取文件分隔符、路径...

    java中如何获取相关参数

    例如,`"os.name"`用于获取操作系统名称,`"os.arch"`表示操作系统架构,`"os.version"`则是操作系统的版本。 此外,还有一些与文件和路径相关的属性,如`"file.separator"`(文件分隔符,通常在Unix系统中为"/")...

    php-java-bridge 配置包

    $system ->getProperty( 'os.arch' ). ' ' ; // java.util.Date example $formatter = new Java( 'java.text.SimpleDateFormat' , "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz" ); print $formatter ->format...

    JAVA调用第三方DLL的方法

    此外,了解`System.getProperty()`方法可以帮助我们获取关于Java运行时环境的更多信息。例如: - `java.version`:Java运行时环境的版本。 - `java.vendor`:Java运行时环境供应商。 - `java.vm.name`:Java虚拟机...

Global site tag (gtag.js) - Google Analytics