Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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而不是Windows时会出现文件未找到错误?_Java_Macos_Intellij Idea - Fatal编程技术网

为什么在java中使用OSX而不是Windows时会出现文件未找到错误?

为什么在java中使用OSX而不是Windows时会出现文件未找到错误?,java,macos,intellij-idea,Java,Macos,Intellij Idea,我是JavaN00B,请原谅我的无知 我正在尝试在OSX上的IntelliJ中运行TestNG测试,但当我这样做时,我得到以下文件未找到错误: File: src/test/resources/manager/MemberTest/testCreating.csv not found. 然而,当我的同事在他们的Windows机器上运行此测试时,测试完成,他们不会得到相同的错误。其中一名同事的档案位于 D:\trunk_QA\src\test\resources\manager\MemberTe

我是JavaN00B,请原谅我的无知

我正在尝试在OSX上的IntelliJ中运行TestNG测试,但当我这样做时,我得到以下文件未找到错误:

File: src/test/resources/manager/MemberTest/testCreating.csv not found.
然而,当我的同事在他们的Windows机器上运行此测试时,测试完成,他们不会得到相同的错误。其中一名同事的档案位于

D:\trunk_QA\src\test\resources\manager\MemberTest\testCreating.csv
/Users/username/QA Materials/Automation/Framework/trunk_QA/src/test/resources/manager/MemberTest/testCreating.csv
矿山位于

D:\trunk_QA\src\test\resources\manager\MemberTest\testCreating.csv
/Users/username/QA Materials/Automation/Framework/trunk_QA/src/test/resources/manager/MemberTest/testCreating.csv
dataSourcePath似乎正确地布局为相对路径:

private static String dataSourcePath = "src/test/resources/";
当使用该dataSourcePath运行时,我得到了错误

如果我将其更新为使用本地绝对路径:

private static String dataSourcePath = "/Users/username/QA Materials/Automation/Framework/trunk_QA/src/test/resources/";
然后测试通过。但是,我不能签入这个,因为除了使用绝对链接是一种糟糕的做法之外,它还会破坏我同事机器上的测试


我做错了什么?我是否需要定义一个系统变量,比如CLASSPATH?

首先,我建议使用
File.separator
而不是斜杠,因为它们保证是跨平台的

如果这不起作用,您可以尝试以下方法:

System.out.println(new File(".").getCanonicalPath());

这将打印您所在的实际目录。也许你不是你想象中的那样?

我知道了。我必须在Run>editconfigurations>TestNG下编辑工作目录。当我导入项目时,它自己设置了工作目录,而且设置错误

当dataSourcePath设置为src/test/resources/时,它没有打印user.dir的原因是它在命中该代码块之前出错

总的来说,如果您知道如何设置IntelliJ,这是一个非常简单的解决方案


谢谢大家的帮助!我学到了各种新东西。

也许这与windows中使用的反斜杠有关,与OSX和Linux中的常规斜杠相反?这些相对路径将与.class文件相对(或者更确切地说是从应用程序实际初始化的位置相对)。不是来自.java文件。这可能与他们使用的IDE有关,甚至取决于每个IDE的配置(存储资源的位置等)。请尝试在之前添加此选项,以查看您的文件是否位于正确的位置:
System.out.println(“Working Directory=“+System.getProperty(“user.dir”)在下面的答案中查看我的评论。。。谢谢大家!好的,我将“private static String dataSourcePath=“src/test/resources/””更新为“private static String dataSourcePath=(“src”+File.separator+“test”+File.separator+“resources”)”没有乐趣。我发现一个新错误:“找不到符号符号:变量文件”使用@Cruncher的代码获取当前路径,我发现当dataSourcePath设置为src/test/resources/时,我在这里得到一个空白:“System.getProperty(“user.dir”)=”当dataSourcePath设置为/Users/username/QA Materials/Automation/Framework/trunk\u QA/src/test/resources/,我得到了我期望的路径:“/Users/elock/QA Materials”