我在从.jar文件中为Selenium 解压缩实现自动chromedriver时遇到问题。
具有
ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource("resources/drivers/chromedriver.exe");
File f = new File("Driver");
if (!f.exists()) {
f.mkdirs();
}
File chromeDriver = new File("Driver" + File.separator + "chromedriver.exe");
if (!chromeDriver.exists()) {
try {
chromeDriver.createNewFile();
org.apache.commons.io.FileUtils.copyURLToFile(resource, chromeDriver);
} catch (IOException e) {
e.printStackTrace();
}
}
return chromeDriver.getAbsolutePath();
在一个类中,将路径返回到可执行驱动程序,该驱动程序在
中使用System.setProperty("webdriver.chrome.driver", the_path);
打印路径给了我明显正确的驱动程序文件路径,并且正在给定目录下创建文件。 然而,在运行.jar时会出现以下问题
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver
(...)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
但仅在触发使用驱动程序的类时。
代码本身是否有任何改变,或者我在compilepath或类似的东西中遗漏了一些关键的东西?
非常感谢任何帮助!