【问题标题】:ClassNotFoundException when trying to import plugin in Burp尝试在 Burp 中导入插件时出现 ClassNotFoundException
【发布时间】:2020-05-02 01:04:25
【问题描述】:

从昨天开始我就遇到了这个问题,Burp 在尝试导入插件的 .jar 文件时开始显示以下错误,但 Netbeans 编译它没有问题。我通过 pom.xml 文件中的 Maven 依赖项导入 Selenium,每次将插件加载到 Burp 时,我都会运行 Clean and build 选项以避免任何问题

但是,我运行的代码是这样的:

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)

尴尬的是,如果我评论 driver 对象的两个实现,Burp 显示导入它没有错误。似乎在实现 WebDriver 对象时有问题,但在声明它时却没有,这对于 ClassNotFoundException 来说很奇怪。另一个工具,其代码与这些组件具有相同的结构,如果它加载并运行良好,则没有错误。

【问题讨论】:

  • Netbeans 是否将依赖项映射为 jar 文件,而不是从 pom 文件中提取依赖项?
  • @fpezzini 嗨,我可以确认没有。现在我尝试创建一个新项目并复制我的文件以检查它是否有效,但我真的不知道那里发生了什么:S 如果您有其他建议,请告诉我,谢谢
  • 是的,当您从终端执行程序时,类路径中缺少该类。它可能取决于依赖项 JAR 文件,您可以将其添加到您自己生成的 FAT jar 文件中,或者您必须在命令行上使用 java 命令的 -cp 参数或通过添加指向的 CLASSPATH 环境变量来指定它到那个 JAR。请参阅here 了解更多信息。
  • 当 netbeans 尝试构建 jar 时,这不会显示错误吗?因为我可以构建项目,所以在插件导入 Burp 时会显示错误。我会尝试设置类路径,我会告诉你的。谢谢。
  • 取决于 Netbeans 是否在某处设置了该依赖项 JAR。至少在我过去的经验中,当它在 IDE 之外失败是因为 IDE 将它映射到项目配置中的某个位置。即使不是 JAR 本身,您也可以添加包含它的某个库。

标签: java classnotfoundexception burp


【解决方案1】:

将此插件添加到 pom.xml 文件为我修复了错误,它在构建项目时在 jar 中包含 Maven 依赖项。

<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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多