【问题标题】:Java creating a File, path is not recognized ( I guess )Java 创建文件,路径无法识别(我猜)
【发布时间】:2013-01-05 12:17:23
【问题描述】:

我在src/test/java/com/x/utils 中有一个名为 WebUtil.Java 的文件。我想运行这段代码:

File firefoxProfileFolder = new File("/../../resources/firefoxprofile");

在这个文件中创建一个文件夹变量firefoxProfileFolder。

此文件夹 ( firefoxprofile ) 位于 src/test/resources/firefoxprofile。我正在做的是:

File firefoxProfileFolder = new File("../../../resources/firefoxprofile");

但它不起作用?我究竟做错了什么? 我得到的错误是:

org.openqa.selenium.firefox.UnableToCreateProfileException: Given model profile directory does not exist: ../../../resources/firefoxprofile
Build info: version: '2.25.0', revision: '17482', time: '2012-07-18 22:18:01'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.7.3', java.version: '1.6.0_35'
Driver info: driver.version: unknown

【问题讨论】:

  • 看起来路径错误。相对路径始终参考您当前的工作目录。尝试使用绝对路径。
  • 代码会转到服务器所以我真的不知道绝对路径。我必须使用相对。但是这里有什么问题呢?
  • 路径错误。对于测试,使用绝对路径直到它工作,然后找出一个为您的服务器配置此配置的好方法。 “当前工作目录”对于非控制台应用程序来说总是很棘手。另外,如果可能(可能不在此处)避免使用文件,请从您的 jar 文件中加载资源。
  • @DuncanJones 是的,Maven。我是 Mac 新手。 Mac如何使用绝对路径?
  • "如何在 Mac 中使用绝对路径?"与 windows/linux 一样,不要在开头放 / 开头,例如新文件(“../../resources/firefoxprofile”);前导 / 表示根

标签: java file maven import


【解决方案1】:

如果您使用的是 Maven,您应该能够使用这样的代码来解析测试资源的绝对路径名:

URL url = getClass().getResource("/firefoxprofile");

if (url == null) {
  // ... not found
} else {
  File firefoxProfileFolder = new File(url.getPath());
  // ...
}

【讨论】:

    【解决方案2】:

    如果您将其作为测试的一部分运行(假设您是,因为类位于测试文件夹中),surefire 插件会将 Maven 项目的基本目录设置为系统属性。

    String basedir = System.getProperty("basedir");
    

    basedir 变量将具有项目的目录。那么你的原始代码可以这样写

    File firefoxProfileFolder = new File(basedir + "/src/test/resources/firefoxprofile");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2019-12-19
      • 1970-01-01
      • 2019-05-25
      相关资源
      最近更新 更多