Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OSX jdk 1.8.0_111上的user.dir属性是否已损坏?其他操作系统、版本如何?_Java - Fatal编程技术网

Java OSX jdk 1.8.0_111上的user.dir属性是否已损坏?其他操作系统、版本如何?

Java OSX jdk 1.8.0_111上的user.dir属性是否已损坏?其他操作系统、版本如何?,java,Java,我只有这个mac,我想知道这个问题是否存在于其他操作系统或JDK上。如果第二行到最后一行验证绝对路径是否引用真实文件(并与第一个文件abs路径匹配),但f2.exists调用返回false,就像它不存在一样,则此测试失败 我对windows和linux很好奇,这是否也失败了 @Test public void testUserDirProp() { File f = new File("src/test/resources/logback-test.xml"); //asser

我只有这个mac,我想知道这个问题是否存在于其他操作系统或JDK上。如果第二行到最后一行验证绝对路径是否引用真实文件(并与第一个文件abs路径匹配),但f2.exists调用返回false,就像它不存在一样,则此测试失败

我对windows和linux很好奇,这是否也失败了

@Test
public void testUserDirProp() {
    File f = new File("src/test/resources/logback-test.xml");

    //assert absolute path is correct
    Assert.assertEquals("/Library/Workflow/webpieces/core/core-util/src/test/resources/logback-test.xml", f.getAbsolutePath());
    Assert.assertTrue(f.exists());

    //NOW, change user.dir
    System.setProperty("user.dir", "/Library/Workflow/webpieces/core/core-util/src");

    //Now, f2 is relative to NEW user.dir property
    File f2 = new File("test/resources/logback-test.xml");

    //verify absolute path is still the full correct path for f2 and it is
    Assert.assertEquals("/Library/Workflow/webpieces/core/core-util/src/test/resources/logback-test.xml", f2.getAbsolutePath());

    //since absolute path was correct, it should exist 
    Assert.assertTrue(f2.exists());
}

user.dir
属性未损坏。不支持对其进行设置,也不能保证以任何特定方式进行操作。请参阅和链接的票证:

经过仔细考虑,我们仍然不认为当前的行为可以/应该改变。我们从未保证“user.dir”在任何给定的时间都会被查询,不幸的是,jdk假设这个属性不会改变。理想情况下,我们应该引入“只读”系统属性的概念,以防止此系统属性和其他系统属性发生不受支持的更改

在jvm启动期间初始化的“user.dir”应该用作 信息性/只读系统属性,请尝试通过命令行对其进行自定义 -Duser.dir=xyz将以依赖于实现/未指定的行为结束。 当前的文件系统实现在很大程度上取决于以下假设: 我们没有类似“chdir”或“chdir”的功能(比如use-Duser.dir=xyz) 这将把“当前用户目录”更改为不是jvm启动的唯一目录。 也就是说,FileIn/OutputStream的不一致行为确实是一个错误 行为(FileIn/OutputStream的openimpl直接变为naiveopen 由于上述假设,未咨询java文件/文件系统 上文)

要更改当前实现以支持“可自定义”user.dir,请执行以下操作: 一件大事,很多类/行的变化,只有当我们相信它是 真的值得做


哦,谢谢!伙计,如果他们在设置时抛出一个异常肯定会很好,所以我们都知道这一点。看起来他们应该尽快失败,而不是让人们浪费时间处理奇怪的问题。哦,好吧。