java - 尝试以嵌入式模式启动 BrowserMobProxyServer 时发生 JNI 错误(Java、Maven)

标签 java maven selenium java-native-interface browsermob-proxy

大家好,这是我的第一篇文章。我正在尝试在嵌入式模式下用 Java 设置 Selenium 和 Browsermob 代理(不得不说我以前从未使用过 Maven、Selenium 或 BrowserMob 代理)。继Github BrowserMob Proxy 的说明我在 Eclipse 中设置了一个 Maven 项目,并在 pom.xml 中添加了两个依赖项。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ba</groupId>
<artifactId>com.ba.project</artifactId>
<version>0.0.1-SNAPSHOT</version>

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.14.0</version>
    </dependency>

<dependency>
    <groupId>net.lightbody.bmp</groupId>
    <artifactId>browsermob-core</artifactId>
    <version>2.1.5</version>
    <scope>test</scope>
</dependency>
</dependencies>

为了测试它是否有效...

public class Test {
public static void main(String[] args) {
    System.setProperty("webdriver.gecko.driver", "...");
    WebDriver driver = new FirefoxDriver();
    BrowserMobProxy proxy = new BrowserMobProxyServer();
    proxy.start(0);
}}

...我得到this errordialog 接下来是这个异常..

Exception in thread "main" java.lang.NoClassDefFoundError: net/lightbody/bmp/BrowserMobProxy
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: 
net.lightbody.bmp.BrowserMobProxy
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)
... 7 more

当我从主方法中删除最后一行时,它可以正常工作。 有谁知道我在这里做错了什么?提前致谢。

最佳答案

可以换吗

<dependency>
    <groupId>net.lightbody.bmp</groupId>
    <artifactId>browsermob-core</artifactId>
    <version>2.1.5</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>net.lightbody.bmp</groupId>
    <artifactId>browsermob-core</artifactId>
    <version>2.1.5</version>
</dependency>

并尝试一下?可能是 POM 文件的依赖解析问题。

关于java - 尝试以嵌入式模式启动 BrowserMobProxyServer 时发生 JNI 错误(Java、Maven),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52996212/

相关文章:

java - cargo 嵌入式tomcat : custom context. xml

python - Selenium - X 时间后刷新所有选项卡

java - 如果我不想粘贴相同的代码,如何在不同的 Activity 中设置相同的工具栏?

java - 尝试对要显示在表行中的数组进行排序

maven - 更改 Jenkins 作业工作区

python - 如何在 python 中使用 Selenium 提交 Https 身份验证

selenium - 用于记录在浏览器中为 UI 自动化测试完成的任务的选项

java - 为什么在这种情况下它不执行数学运算?

java - Java 中的 stub 方法

maven - 使用 Maven 构建时出现服务不可用错误