当前位置: 首页 > 面试题库 >

Java:System.getProperty(“ user.home”)返回“?”

康鹏云
2023-03-14
问题内容

我完全迷失了这一点:System.getProperty("user.home")System.getProperty("user.name")返回一个问号“?”。

System-Specs:
Kubuntu 9.04
Gnome 2.2.61
Java 1.5.0_16

我的测试用例看起来像这样:

$ more Test.java
class Test { public static void main( String[] args ) { System.out.println( System.getProperties() ); } }

结果是(添加了换行符以提高可读性,替换了公司名称和自己的名称):

$ javac Test.java
$ java Test
{
java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition,
sun.boot.library.path=/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/lib/i386,
java.vm.version=1.5.0_16-b02,
java.vm.vendor=Sun Microsystems Inc.,
java.vendor.url=http://java.sun.com/,
path.separator=:,
java.vm.name=Java HotSpot(TM) Server VM,
file.encoding.pkg=sun.io,
sun.java.launcher=SUN_STANDARD,
user.country=US,
sun.os.patch.level=unknown,
java.vm.specification.name=Java Virtual Machine Specification,
user.dir=/home/MYCOMPANY/myname/temp,
java.runtime.version=1.5.0_16-b02,
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment,
java.endorsed.dirs=/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/lib/endorsed,
os.arch=i386,
java.io.tmpdir=/tmp,
line.separator=
,
java.vm.specification.vendor=Sun Microsystems Inc.,
os.name=Linux,
sun.jnu.encoding=UTF-8,
java.library.path=/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/lib/i386/server:/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/lib/i386:/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/../lib/i386,
java.specification.name=Java Platform API Specification,
java.class.version=49.0,
sun.management.compiler=HotSpot Server Compiler,
os.version=2.6.28-15-generic,
user.home=?,
user.timezone=,
java.awt.printerjob=sun.print.PSPrinterJob,
file.encoding=UTF-8,
java.specification.version=1.5,
java.class.path=.,
user.name=?,
java.vm.specification.version=1.0,
java.home=/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre,
sun.arch.data.model=32,
user.language=en,
java.specification.vendor=Sun Microsystems Inc.,
java.vm.info=mixed mode,
java.version=1.5.0_16,
java.ext.dirs=/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/lib/ext,
sun.boot.class.path=/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/lib/rt.jar:/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/lib/i18n.jar:/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/lib/sunrsasign.jar:/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/lib/jsse.jar:/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/lib/jce.jar:/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/lib/charsets.jar:/home/MYCOMPANY/myname/apps/jdk1.5.0_16/jre/classes,
java.vendor=Sun Microsystems Inc.,
file.separator=/,
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi,
sun.io.unicode.encoding=UnicodeLittle,
sun.cpu.endian=little,
sun.desktop=gnome,
sun.cpu.isalist=
}

有没有人经历过?Java在哪里寻找用户和主目录?我已经检查了设置正确的HOME环境变量。


问题答案:

有点尴尬,但解决方案只是在64位系统上使用64位JDK。我从旧机器上复制了所有内容,这也意味着32位JDK,这就是问题所在。它在64位运行时中按预期工作。

很抱歉打扰。



 类似资料:
  • 问题内容: 如何从Java程序外部更改user.home系统属性,使其认为它与D:\ Documents and Settings \%USERNAME%是不同的目录?通过环境变量还是VM参数? 问题答案: 设置VM参数应该起作用: 这是一个测试案例: 在Win XP和Linux上使用Java 1.5.0_17测试

  • 问题内容: 我们公司最近从Windows XP升级到Windows 7 Enterprise。JDK安装不再将 user.home 设置为用户目录的完整路径,而是将user.home设置为。这导致诸如Eclipse,Maven等应用程序出现很多问题。我现在必须在JVM中为每个应用程序设置- Duser.home。其他人有没有经历过?有解决办法吗?这与Windows 7 Enterprise的安装有

  • 问题内容: 我正在使用JRE 1.7,发现System属性非常不寻常。JVM如何设置该值? 问题答案: 此Java错误说明了如何:http : //bugs.sun.com/view_bug.do?bug_id=4787931 系统属性由以下方式设置: 读取注册表值以获取键: 采用此值的父路径,但 不 解析环境变量。 示例:=> (未解析的环境变量) 此问题应在Java 8中解决。 相关参考:Ja

  • 问题内容: 我在Eclipse中保存密码时遇到问题。我的密码都没有被“记住”,我发现Eclipse试图将其保存在Windows帐户无法访问的文件夹中。 它尝试保存到 一个不存在的目录,我的Win帐户也无法将其写入该目录。 我发现我的user.home变量设置为D:\ Users \ Administrator。我的猜测很疯狂,因为安装Java的是Administrator帐户。 所以我的问题是-我

  • 我使用Spring Initializr生成了一个Spring Bootweb应用程序,使用macOS Sierra中的嵌入式Tomcat+Thymeleaf模板引擎。我想在Mac OS中使用系统变量User Home Folder Name 但我在启动应用程序时出现了这个错误

  • 问题内容: 我在使用Ajax时遇到问题。 问题是,在获得ajax响应之前,它会返回cnt。因此它总是返回NULL。 有没有办法使正确的返回响应值? 谢谢! 问题答案: 由于AJAX请求是异步的,因此您的cnt变量将在请求返回并调用成功处理程序之前返回。 我建议重构您的代码以解决此问题。 一种方法是从AJAX请求的成功处理程序中调用调用了GetGrantAmazonItemCnt()的任何函数,此方