ClassNotFoundException при попытке импортировать плагин в Burp

Я столкнулся с этой проблемой со вчерашнего дня, Burp начал показывать ошибку ниже при попытке импортировать файл .jar плагина, но у Netbeans нет проблем с его компиляцией. Я импортировал Selenium через зависимость Maven в файле pom.xml, и каждый раз, когда я загружаю плагин в Burp, я запускаю опцию «Очистить и построить», чтобы избежать каких-либо проблем.

Однако код, который я запускаю, выглядит следующим образом:

void runBrowserAutomatization(File fileDriver, String seleniumTrack, boolean isHeadless) {

        WebDriver driver;

        if (gui.usedBrowser().toLowerCase().contains("chrome")) {
            ChromeOptions options = new ChromeOptions();
            Proxy proxy = new Proxy();
            proxy.setHttpProxy("localhost:8080");
            proxy.setSslProxy("localhost:8080");

            options.setCapability(CapabilityType.PROXY, proxy);
            options.setHeadless(isHeadless);
            System.setProperty("webdriver.chrome.driver", fileDriver.getPath());

            driver = new ChromeDriver(options);

        } else if (gui.usedBrowser().toLowerCase().contains("firefox")) {
            FirefoxOptions options = new FirefoxOptions();
            Proxy proxy = new Proxy();
            proxy.setHttpProxy("localhost:8080");
            proxy.setSslProxy("localhost:8080");

            options.setCapability(CapabilityType.PROXY, proxy);
            options.setHeadless(isHeadless);
            System.setProperty("webdriver.gecko.driver", fileDriver.getPath());

            driver = new FirefoxDriver(options);
        } else {
            printMsg("No browser selected...");
            return;
        }

       /// other stuff here

        driver.close();

    }

Появляется следующая ошибка

java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:436)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:416)
    at burp.ehm.a(Unknown Source)
    at burp.ehm.<init>(Unknown Source)
    at burp.b6.a(Unknown Source)
    at burp.c3u.lambda$panelLoaded$0(Unknown Source)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:830)

Неудобно то, что если я прокомментирую две реализации объекта драйвер, Burp не покажет ошибки при его импорте. Похоже, у него проблема с реализацией объекта WebDriver, но не с его объявлением, что очень странно для ClassNotFoundException. Другой инструмент, код которого имеет ту же структуру с этими компонентами, не имеет ошибок, если он загружен и работает нормально.


person Stefano    schedule 02.05.2020    source источник
comment
Имеются ли в Netbeans зависимости, отображаемые в виде файлов jar, вместо извлечения зависимостей из файла pom?   -  person fpezzini    schedule 02.05.2020
comment
@fpezzini привет, я могу подтвердить, что их нет. Теперь я пытаюсь создать новый проект и скопировать свои файлы, чтобы проверить, работает ли он, но я действительно понятия не имею, что там происходит: S, если у вас есть другие предложения, дайте мне знать, спасибо   -  person Stefano    schedule 02.05.2020
comment
Да, этот класс отсутствует в пути к классу, когда вы запускаете свою программу из терминала. Вероятно, это зависит от JAR-файла зависимостей, который вы можете либо добавить в свой собственный сгенерированный файл jar FAT, либо указать его в командной строке, используя аргумент -cp для команды java, или добавив переменную среды CLASSPATH, которая указывает к этому банку. Подробнее см. здесь.   -  person fpezzini    schedule 02.05.2020
comment
Разве это не покажет ошибку, когда netbeans попытается создать банку? Поскольку я могу собрать проект, ошибка отображается при импорте плагина в Burp. Я попытаюсь установить путь к классам, я дам вам знать. Спасибо.   -  person Stefano    schedule 02.05.2020
comment
Зависит от того, есть ли в Netbeans эта настройка JAR зависимостей. По крайней мере, по моему опыту в прошлом, когда он терпел неудачу вне IDE, это было связано с тем, что IDE отображала его где-то в конфигурации проекта. Даже если не сам JAR, вы могли бы добавить определенную библиотеку, содержащую его.   -  person fpezzini    schedule 02.05.2020
comment
Очевидно, у меня нет файла .jar, так как это зависимость от maven... но я читал, что добавление тега ‹scope›compile‹/scope› внутри ‹dependency› должно позволить библиотеке быть доступной во время выполнения. Я сделал это, но это не решило мою проблему.   -  person Stefano    schedule 02.05.2020
comment
Вы проверили, возможно, загрузка jar с помощью maven не удалась? Вы можете увидеть соответствующий файл jar в папке ~/.m2? Иногда сборка Maven может не загружать новые зависимости, если вы используете Java ниже 1.8 или из-за того, что загрузка завершилась неправильно (файл становится искаженным).   -  person fpezzini    schedule 02.05.2020
comment
Давайте продолжим обсуждение в чате.   -  person Stefano    schedule 02.05.2020


Ответы (1)


Добавление этого плагина в файл pom.xml исправило ошибку для меня, он включает зависимости Maven в jar при сборке проекта.

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.3</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>

Последнюю версию подключаемого модуля можно найти здесь https://maven.apache.org/plugins/maven-shade-plugin/usage.html

person Stefano    schedule 10.05.2020