创建和使用具有非文本资源的jar

时间:2018-10-16 10:19:07

标签: java selenium jar selenium-chromedriver relative-path

我正在尝试创建一个jar,使人们可以通过此库启动Web浏览器驱动程序。 因此,想法是让一个项目“ ToBecomeJar”将chromedriver(没有文件扩展名)作为“ drivers”文件夹中的一项,并在其代码中将其使用为:

private WebDriver getDriver(){
    System.setProperty(CHROME_DRIVER_PROPERTY, "drivers/chromedriver");
    driver =new ChromeDriver();

    return driver;
}

这里的问题是,当我将该项目转换为库时,使用时当然会将“ PathToDriver”作为绝对路径,导致我的新项目需要与驱动程序库完全相同的路径结构那里。

有什么办法使这个相对?

我曾尝试使用资源文件夹并使用.getResource调用资源,但我确实无法使其正常工作。调查这些人时,应提到它应该变成.getResourceStream,因为它变成了文件以外的其他名称,但这对我不起作用,因为它不是我要使用的文本文件。

2 个答案:

答案 0 :(得分:1)

尝试使用'user.dir',它是JVM的环境变量。 它可以用来构造驱动程序可执行文件的路径字符串:

private WebDriver getDriver(){
    System.setProperty(CHROME_DRIVER_PROPERTY, System.getProperty("user.dir") + "/drivers/chromedriver");
    driver = new ChromeDriver();
    return driver;
}

答案 1 :(得分:0)

您可以在启动应用程序时将jar中所需的资源提取到一个临时文件夹,然后指向该文件夹以获取适当的驱动程序。