【问题标题】:System.getenv("ProgramFiles") returns C:\Program Files (x86)System.getenv("ProgramFiles") 返回 C:\Program Files (x86)
【发布时间】:2015-02-03 09:38:11
【问题描述】:

我在 64 位安装的 Windows 7 上运行,并且正在调用 System.getenv("programfiles") 返回 C:\Program Files (x86) 而不是 C:\Program Files。我还注意到,当我在 IntelliJ 中使用 run 运行相同的代码时,它会返回应有的 C:\Program Files。我认为这是因为它从 IntelliJ 继承环境变量,但我希望能够从独立应用程序中获取 32 位和 64 位版本。是什么原因造成的,我能做些什么来解决它?

【问题讨论】:

  • 您的代码是使用 32 位 JDK 还是 64 位编译的?
  • 通常,应用程序会根据其比特性呈现一个环境。因此,32 位应用程序获取 32 位文件夹名称和注册表项,而 64 位应用程序获取 64 位挂件。
  • @BuhakeSindi 我正在使用 Maven 进行编译,我假设它使用 JAVA_HOME (应该是 64 位),但是当使用与 JAVA_HOME 相同路径的 IntelliJ 进行编译时,它可以工作。
  • @user2248702 它与您编译代码的java版本无关,但与您运行的java版本有关您的应用程序。系统将始终公开您正在执行代码的已配置 JVM 的属性。

标签: java intellij-idea environment-variables


【解决方案1】:

它返回 x86 文件夹的最可能原因是您正在使用 32 位 JDK 执行独立应用程序。你能仔细检查你的JAVA_HOMEJRE_HOME 环境变量吗?或快速发送java -version

另外,也许这个问题会有所帮助: Java - get "program files" path

【讨论】:

  • 我已取消设置我的 JAVA_HOME 变量,因为获取程序文件的全部原因是设置 JAVA_HOME 变量。我从来没有将 JRE_HOME 设置为任何东西,并且 java --version 返回“错误:无法创建 Java 虚拟机”我不确定是什么原因造成的,但我认为这是因为未设置 JRE_HOME。
  • 原来我打错了“版本”,现在显示的是 1.7.0_09
  • @user2248702 它是否显示在 java -version 输出的第 3 行,例如:“Java HotSpot(TM) 64-Bit Server”?
  • 它准确地说是“Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)”。 (它不会因为某种原因让我标记你)
  • @user2248702 标记可能是由于缺乏声誉。让我感到困惑的是,如果您的 java 环境是 64 位,那么我希望 System.getenv(...) 的输出提供 ProgramFiles 而不是 Program Files x86。
猜你喜欢
  • 1970-01-01
  • 2017-02-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多