簡體   English   中英

在運行Maven / Selenium時出現“ com / sun / jna / platform / win32 / Kernel32”和“ org / openqa / selenium / os / Kernel32”的noclassdeffounderror

[英]noclassdeffounderror with “com/sun/jna/platform/win32/Kernel32” and “org/openqa/selenium/os/Kernel32” while running through maven/selenium

當我使用Maven運行示例應用程序時,我得到以下error.please的外觀和指南,以下是日志和pom.xml。

盡管測試運行正常,但瀏覽器已按預期方式打開,但構建失敗

public class GoogleTest{

   @Test
    public void testGoogle()
    {
       //System.setProperty("webdriver.gecko.driver", "C:\\Users\\dilu316\\Downloads\\selenium workspace\\geckodriver-v0.15.0-win64\\geckodriver.exe");
       //System.setProperty("webdriver.gecko.driver", "C:\\Users\\dilu316\\Downloads\\selenium workspace\\chromedriver_win32 (1)\\chromedriver.exe");
       WebDriver driver =  new FirefoxDriver();
        driver.get("http://google.com");
        driver.quit();
    }


}

The following error logs happen:  
-------------------------------------------------------

 T E S T S
-------------------------------------------------------
Running com.testing.GoogleTest
1489310484173   geckodriver     INFO    Listening on 127.0.0.1:34551
1489310484869   mozprofile::profile     INFO    Using profile path C:\Users\dilu316\AppData\Local\Temp\rust_mozprofile.QqB2wW3EaREi
1489310484886   geckodriver::marionette INFO    Starting browser C:\Program Files (x86)\Mozilla Firefox\firefox.exe with args []
1489310484895   geckodriver::marionette INFO    Connecting to Marionette on localhost:54584
1489310487924   Marionette      INFO    Listening on port 54584
Mar 12, 2017 2:51:31 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
1489310494254   Marionette      INFO    New connections will no longer be accepted
[Child 384] WARNING: pipe error: 232: file c:/builds/moz2_slave/m-rel-w32-00000000000000000000/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 512
[Child 384] ###!!! ABORT: Aborting on channel error.: file c:/builds/moz2_slave/m-rel-w32-00000000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 2143
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 11.268 sec <<< FAILURE!
testGoogle(com.testing.GoogleTest)  Time elapsed: 11.218 sec  <<< ERROR!
java.lang.NoClassDefFoundError: com/sun/jna/platform/win32/Kernel32 
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at org.openqa.selenium.os.ProcessUtils.getProcessId(ProcessUtils.java:184)
        at org.openqa.selenium.os.ProcessUtils.killWinProcess(ProcessUtils.java:128)
        at org.openqa.selenium.os.ProcessUtils.killProcess(ProcessUtils.java:81)
        at org.openqa.selenium.os.UnixProcess$SeleniumWatchDog.destroyHarder(UnixProcess.java:246)
        at org.openqa.selenium.os.UnixProcess$SeleniumWatchDog.access$200(UnixProcess.java:200)
        at org.openqa.selenium.os.UnixProcess.destroy(UnixProcess.java:126)
        at org.openqa.selenium.os.CommandLine.destroy(CommandLine.java:153)
        at org.openqa.selenium.remote.service.DriverService.stop(DriverService.java:198)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:94)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:661)
        at org.openqa.selenium.remote.RemoteWebDriver.quit(RemoteWebDriver.java:500)
        at com.testing.GoogleTest.testGoogle(GoogleTest.java:22)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
        at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.ClassNotFoundException: com.sun.jna.platform.win32.Kernel32
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 54 more

Running com.testing.YahooTest
1489310494556   geckodriver     INFO    Listening on 127.0.0.1:43880
1489310495021   mozprofile::profile     INFO    Using profile path C:\Users\dilu316\AppData\Local\Temp\rust_mozprofile.1o7a0AEkUuwY
1489310495025   geckodriver::marionette INFO    Starting browser C:\Program Files (x86)\Mozilla Firefox\firefox.exe with args []
1489310495033   geckodriver::marionette INFO    Connecting to Marionette on localhost:54615
1489310496713   Marionette      INFO    Listening on port 54615
Mar 12, 2017 2:51:40 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
1489310509473   Marionette      INFO    New connections will no longer be accepted
[Child 7608] ###!!! ABORT: Aborting on channel error.: file c:/builds/moz2_slave/m-rel-w32-00000000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 2143
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 15.319 sec <<< FAILURE!
testYahoo(com.testing.YahooTest)  Time elapsed: 15.315 sec  <<< ERROR!
java.lang.NoClassDefFoundError: org/openqa/selenium/os/Kernel32 
        at org.openqa.selenium.os.ProcessUtils.getProcessId(ProcessUtils.java:184)
        at org.openqa.selenium.os.ProcessUtils.killWinProcess(ProcessUtils.java:128)
        at org.openqa.selenium.os.ProcessUtils.killProcess(ProcessUtils.java:81)
        at org.openqa.selenium.os.UnixProcess$SeleniumWatchDog.destroyHarder(UnixProcess.java:246)
        at org.openqa.selenium.os.UnixProcess$SeleniumWatchDog.access$200(UnixProcess.java:200)
        at org.openqa.selenium.os.UnixProcess.destroy(UnixProcess.java:126)
        at org.openqa.selenium.os.CommandLine.destroy(CommandLine.java:153)
        at org.openqa.selenium.remote.service.DriverService.stop(DriverService.java:198)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:94)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:661)
        at org.openqa.selenium.remote.RemoteWebDriver.quit(RemoteWebDriver.java:500)
        at com.testing.YahooTest.testYahoo(YahooTest.java:21)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
        at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Results :

Tests in error:
  testGoogle(com.testing.GoogleTest): com/sun/jna/platform/win32/Kernel32
  testYahoo(com.testing.YahooTest): org/openqa/selenium/os/Kernel32

Tests run: 2, Failures: 0, Errors: 2, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 29.684 s
[INFO] Finished at: 2017-03-12T14:51:50+05:30
[INFO] Final Memory: 11M/309M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project MyMavenProject: There are test failures.
[ERROR]
[ERROR] Please refer to C:\Users\dilu316\Documents\maven\MyMavenProject\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

C:\Users\dilu316\Documents\maven\MyMavenProject>

我的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.testing</groupId>
  <artifactId>MyMavenProject</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>MyMavenProject</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.2</version>
      <scope>test</scope>
    </dependency>
   <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-server</artifactId>
    <version>3.3.0</version>
</dependency>



  </dependencies>
</project>

我相信問題出在您的pom文件,您可能正在運行的mvn test (我正確嗎?)以及您對硒的依賴性中,您需要添加<scope>test</scope>

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-server</artifactId>
    <version>3.3.0</version>
    <scope>test</scope>
</dependency>

詳細說明 :Maven依賴項中的作用域指示將在哪個步驟(插件:目標)中使用該依賴項(例如,用作類路徑的內容)。 由於您正在運行測試,並且這些依賴項屬於測試階段,因此需要指定它。 現在,您的錯誤表明您缺少一個依賴項(找不到某個類),這是因為test范圍中的依賴項不是可傳遞的,這意味着com.sun.jna.platform.win32.Kernel32類正如我在您的依賴樹中看到的那樣,Selenium的依賴不會被解析為本地Maven存儲庫。

解決方案 :為缺少的類(位於包net.java.dev.jna.platform )添加一個maven依賴net.java.dev.jna.platform

<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>platform</artifactId>
    <version>3.4.0</version>
    <scope>test</scope>
</dependency>

使用driver.close(); 代替。 我遇到過同樣的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM