java-client icon indicating copy to clipboard operation
java-client copied to clipboard

RemoteWebElement class shows error in compile time. But all the java-client libs downloaded.

Open varun2810 opened this issue 1 year ago • 25 comments

java.lang.ClassNotFoundException: org.openqa.selenium.remote.RemoteWebElement at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.findClass(ByteArrayClassLoader.java:404) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:756) at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.access$300(ByteArrayClassLoader.java:57) at net.bytebuddy.dynamic.loading.ByteArrayClassLoader$ClassDefinitionAction.run(ByteArrayClassLoader.java:687) at net.by

Java-Client-8.6.0
OS : Mac

varun2810 avatar Oct 25 '23 12:10 varun2810

public LoginPage(AndroidDriver driver) { this.driver = driver; PageFactory.initElements(new AppiumFieldDecorator(driver), this); }

// Cliq Login
@AndroidFindBy(id = "signinbtn")
public WebElement gettingStarted;

@AndroidFindBy(xpath = "//android.widget.EditText[@resource-id='login_id']")
WebElement emailField;

My code

varun2810 avatar Oct 26 '23 05:10 varun2810

The error means Selenium dependencies are missed in the classpath

valfirst avatar Oct 26 '23 11:10 valfirst

@valfirst below is the complete issue i'm facing.

26-Oct-2023 18:32:13.548 SEVERE [http-9090-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet WebdriverApi threw exception java.lang.ClassNotFoundException: org.openqa.selenium.remote.RemoteWebElement at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.findClass(ByteArrayClassLoader.java:404) 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.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016) at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.access$300(ByteArrayClassLoader.java:57) at net.bytebuddy.dynamic.loading.ByteArrayClassLoader$ClassDefinitionAction.run(ByteArrayClassLoader.java:687) at net.bytebuddy.dynamic.loading.ByteArrayClassLoader$ClassDefinitionAction.run(ByteArrayClassLoader.java:639) at java.base/java.security.AccessController.doPrivileged(Native Method) at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.doPrivileged(ByteArrayClassLoader.java) at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.findClass(ByteArrayClassLoader.java:406) 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:398) at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.load(ByteArrayClassLoader.java:361) at net.bytebuddy.dynamic.loading.ClassLoadingStrategy$Default$WrappingDispatcher.load(ClassLoadingStrategy.java:367) at net.bytebuddy.dynamic.loading.ClassLoadingStrategy$Default.load(ClassLoadingStrategy.java:148) at net.bytebuddy.dynamic.TypeResolutionStrategy$Passive.initialize(TypeResolutionStrategy.java:101) at net.bytebuddy.dynamic.DynamicType$Default$Unloaded.load(DynamicType.java:6317) at io.appium.java_client.proxy.Helpers.createProxy(Helpers.java:122) at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:86) at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:61) at io.appium.java_client.pagefactory.AppiumFieldDecorator.proxyForAnElement(AppiumFieldDecorator.java:248) at io.appium.java_client.pagefactory.AppiumFieldDecorator.access$000(AppiumFieldDecorator.java:63) at io.appium.java_client.pagefactory.AppiumFieldDecorator$1.proxyForLocator(AppiumFieldDecorator.java:147) at org.openqa.selenium.support.pagefactory.DefaultFieldDecorator.decorate(DefaultFieldDecorator.java:63) at io.appium.java_client.pagefactory.AppiumFieldDecorator.decorate(AppiumFieldDecorator.java:186) at org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:111) at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:103) at com.zoho.cliqmobile.android.pageclass.LoginPage.(LoginPage.java:38) at com.zoho.cliqmobile.android.testclass.LoginTest.(LoginTest.java:35)

varun2810 avatar Oct 27 '23 05:10 varun2810

The issue happens in AppiumFieldDecorator initiate elements in page factory.

public LoginPage(AndroidDriver driver) { this.driver = driver; PageFactory.initElements(new AppiumFieldDecorator(driver), this); } @AndroidFindBy(id = "signinbtn") public WebElement gettingStarted;

The above code works when i change the PageFactory.initElements(new AppiumFieldDecorator(driver), this); to PageFactory.initElements((driver), this);. But when i remove AppiumFieldDecorator, @AndroidFindby doesnt work.

varun2810 avatar Oct 27 '23 05:10 varun2810

Environment used : Java : Jdk11 Jars used : Java-client-8.6.0 Selenium jars used : Selenium jars which is compiled with java-client-8.6.0

varun2810 avatar Oct 27 '23 05:10 varun2810

@varun2810 check your pom file for jdk

ashwithpoojary98 avatar Nov 12 '23 15:11 ashwithpoojary98

I can confirm the same issue on my side using Java-Client-8.6.0 in an Eclipse environment with jdk17. Several approaches to enhance class loading failed. I tried both: to only use the java-client dependency in the pom or to declare the respective depdencies themselves (seleniuem-remote-driver, byte-buddy, etc). Verbose logging confirmed, that the RemoteWebElement class is loaded for the requested version (4.13.0).

Any update on this issue or a possible workaround, which allows the further use of AndroidFindby?

uck82 avatar Jan 04 '24 14:01 uck82

Facing same issue.

Platform: Mac JDK: 21 Appium Java Client: 8.5.1 Selenium Java: 4.10.0 Selenium Server: 4.0.0-alpha-2 webdrivermanager: 5.4.1

ranjanashish00 avatar Jan 11 '24 09:01 ranjanashish00

@ranjanashish00 @uck82 @varun2810 please migrate to Appium Java client 9.0.0 and check if the issues is reproduced

valfirst avatar Jan 18 '24 08:01 valfirst

@valfirst So according to the matrix: https://github.com/appium/java-client?tab=readme-ov-file#compatibility-matrix I have updated first to

  • appium: 8.6.0
  • selenium: 4.13.0 Still faing the issue: java.lang.NoClassDefFoundError: org/openqa/selenium/remote/RemoteWebElement

Then I have updated

  • appium: 9.0.0
  • selenium: 4.14.1 Still facing the issue: java.lang.NoClassDefFoundError: org/openqa/selenium/remote/RemoteWebElement

Then I have added below dependencyManagement, in-order to exclude Selenium from Appium

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>${appium.java.client}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-support</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-remote-driver</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</dependencyManagement>

Still facing the issue: java.lang.NoClassDefFoundError: org/openqa/selenium/remote/RemoteWebElement

Then I have updated:

  • selenium: 4.16.1 Still facing the issue: java.lang.NoClassDefFoundError: org/openqa/selenium/remote/RemoteWebElement

ranjanashish00 avatar Jan 18 '24 10:01 ranjanashish00

Then I have added below dependencyManagement, in-order to exclude Selenium from Appium

why is it needed? actually this is the reason of your problem

valfirst avatar Jan 18 '24 10:01 valfirst

I saw the Maven dependency that

  • selenium-support
  • selenium-remote-driver
  • selenium-api

were already included in latest Appium, So though of excluding them.

Nevertheless, I have removed dependencyManagement. So now the update looks like:

  • appium: 9.0.0
  • selenium: 4.16.1

Still facing the issue: java.lang.NoClassDefFoundError: org/openqa/selenium/remote/RemoteWebElement

ranjanashish00 avatar Jan 18 '24 14:01 ranjanashish00

@ranjanashish00 please share your full POM

valfirst avatar Jan 18 '24 15:01 valfirst

Here it is: https://gist.github.com/AshishHypr/820d7aade48e05d74dbdac4001958818 Please let me know if you need any other info and any info on this pom file

Thank you.

ranjanashish00 avatar Jan 18 '24 16:01 ranjanashish00

@ranjanashish00 the pom you shared contains:

<appium.java.client>8.5.1</appium.java.client> <selenium.version>4.10.0</selenium.version>

it's not

appium: 9.0.0 selenium: 4.16.1

At the same time it also has:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-server</artifactId>
        <version>4.0.0-alpha-2</version>
    </dependency>

and set of other dependencies like webdrivermanager that may bring Selenium dependencies transitively.

I recommend to sanitize your classpath (after that the issue will gone).

valfirst avatar Jan 18 '24 18:01 valfirst

True, the pom which I shared is the complete pom file which I am using. In that I have made changes as I had stated and mentioned the respective result, like updating appium/selenium to different versions.

I have removed selenium-server and still facing issue.

Regarding webdrivermanager, I would need it to create respeciver browser drivers. If I remove this dependency, it giver error for: WebDriverManager.chromedriver().setup();

I have updated gist too.

One more thing I have observed: the usual mvn clean test works fine but this command mvn clean test exec:java@rerunFailedTests triggers the error. Why mvn clean test exec:java@rerunFailedTests: i have implemented logic to get the failed runs and then rerun it using exec-maven-plugin

<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<execution>
    <id>rerunFailedTests</id>
    <goals>
        <goal>java</goal>
    </goals>
</execution>
</executions>

And this triggers the error:

      java.lang.NoClassDefFoundError: org/openqa/selenium/remote/RemoteWebElement
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
	at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.access$300(ByteArrayClassLoader.java:57)
	at net.bytebuddy.dynamic.loading.ByteArrayClassLoader$ClassDefinitionAction.run(ByteArrayClassLoader.java:687)
	at net.bytebuddy.dynamic.loading.ByteArrayClassLoader$ClassDefinitionAction.run(ByteArrayClassLoader.java:639) 

ranjanashish00 avatar Jan 19 '24 12:01 ranjanashish00

@valfirst Any suggestion here?

ranjanashish00 avatar Feb 02 '24 09:02 ranjanashish00

@ranjanashish00 please try new version of Appium Java client

valfirst avatar Feb 02 '24 12:02 valfirst

@valfirst I have updated appium java client to 9.1.0 and now seeing:

java.lang.NoClassDefFoundError: io/appium/java_client/proxy/HasMethodCallListeners
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
	at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.access$300(ByteArrayClassLoader.java:57)
	at net.bytebuddy.dynamic.loading.ByteArrayClassLoader$ClassDefinitionAction.run(ByteArrayClassLoader.java:687)
	at net.bytebuddy.dynamic.loading.ByteArrayClassLoader$ClassDefinitionAction.run(ByteArrayClassLoader.java:639)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.doPrivileged(ByteArrayClassLoader.java)
	at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.findClass(ByteArrayClassLoader.java:406)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:534)
	at java.base/java.lang.Class.forName(Class.java:513)
	at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.load(ByteArrayClassLoader.java:361)
	at net.bytebuddy.dynamic.loading.ClassLoadingStrategy$Default$WrappingDispatcher.load(ClassLoadingStrategy.java:367)
	at net.bytebuddy.dynamic.loading.ClassLoadingStrategy$Default.load(ClassLoadingStrategy.java:148)
	at net.bytebuddy.dynamic.TypeResolutionStrategy$Passive.initialize(TypeResolutionStrategy.java:101)
	at net.bytebuddy.dynamic.DynamicType$Default$Unloaded.load(DynamicType.java:6325)
	at io.appium.java_client.proxy.Helpers.createProxy(Helpers.java:127)
	at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:95)
	at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:70)
	at io.appium.java_client.pagefactory.AppiumFieldDecorator.proxyForAnElement(AppiumFieldDecorator.java:258)
	at io.appium.java_client.pagefactory.AppiumFieldDecorator$1.proxyForLocator(AppiumFieldDecorator.java:157)
	at org.openqa.selenium.support.pagefactory.DefaultFieldDecorator.decorate(DefaultFieldDecorator.java:61)
	at io.appium.java_client.pagefactory.AppiumFieldDecorator.decorate(AppiumFieldDecorator.java:196)
	at org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:109)
	at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:101)
	at com.ashish.mobile.screens.ScreenObject.<init>(ScreenObject.java:13)
	at com.ashish.mobile.screens.BaseScreen.<init>(BaseScreen.java:228)
	at com.ashish.mobile.steps.DebugMenuSteps.<init>(DebugMenuSteps.java:35)
	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
	at org.picocontainer.injectors.AbstractInjector.newInstance(AbstractInjector.java:145)
	at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:342)
	at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
	at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364)
	at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56)
	at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)
	at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)
	at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699)
	at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647)
	at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:678)
	at io.cucumber.picocontainer.PicoFactory.getInstance(PicoFactory.java:49)
	at io.cucumber.java.AbstractGlueDefinition.invokeMethod(AbstractGlueDefinition.java:47)
	at io.cucumber.java.JavaStepDefinition.execute(JavaStepDefinition.java:29)
	at io.cucumber.core.runner.CoreStepDefinition.execute(CoreStepDefinition.java:66)
	at io.cucumber.core.runner.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:63)
	at io.cucumber.core.runner.ExecutionMode$1.execute(ExecutionMode.java:10)
	at io.cucumber.core.runner.TestStep.executeStep(TestStep.java:85)
	at io.cucumber.core.runner.TestStep.run(TestStep.java:57)
	at io.cucumber.core.runner.PickleStepTestStep.run(PickleStepTestStep.java:51)
	at io.cucumber.core.runner.TestCase.run(TestCase.java:84)
	at io.cucumber.core.runner.Runner.runPickle(Runner.java:75)
	at io.cucumber.junit.platform.engine.CucumberEngineExecutionContext.lambda$runTestCase$4(CucumberEngineExecutionContext.java:112)
	at io.cucumber.core.runtime.CucumberExecutionContext.lambda$runTestCase$5(CucumberExecutionContext.java:129)
	at io.cucumber.core.runtime.RethrowingThrowableCollector.executeAndThrow(RethrowingThrowableCollector.java:23)
	at io.cucumber.core.runtime.CucumberExecutionContext.runTestCase(CucumberExecutionContext.java:129)
	at io.cucumber.junit.platform.engine.CucumberEngineExecutionContext.runTestCase(CucumberEngineExecutionContext.java:109)
	at io.cucumber.junit.platform.engine.NodeDescriptor$PickleDescriptor.execute(NodeDescriptor.java:164)
	at io.cucumber.junit.platform.engine.NodeDescriptor$PickleDescriptor.execute(NodeDescriptor.java:90)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
	at com.ashish.web.support.FailedScenariosRunner.main(FailedScenariosRunner.java:64)
	at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:279)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.ClassNotFoundException: io.appium.java_client.proxy.HasMethodCallListeners
	at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.findClass(ByteArrayClassLoader.java:404)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	... 125 more

ranjanashish00 avatar Feb 02 '24 15:02 ranjanashish00

I have same issue, does someone have any solution?

truyenaspire avatar Feb 05 '24 03:02 truyenaspire

@ranjanashish00 @truyenaspire please provide steps to reproduce

valfirst avatar Feb 05 '24 09:02 valfirst

@valfirst In my project, I use selenium 4.11.0 and java-client 8.6.0 I use Appium server 2.x.x I can run mobile test cases successful in locally but when I run on Jenkins, the issue happens [java.lang.NoClassDefFoundError: org/openqa/selenium/remote/RemoteWebElement](javascript:toggleElement('exception-0', 'block')) java.base/java.lang.ClassLoader.defineClass1(Native Method) java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012) net.bytebuddy.dynamic.loading.ByteArrayClassLoader.access$300(ByteArrayClassLoader.java:56) net.bytebuddy.dynamic.loading.ByteArrayClassLoader$ClassDefinitionAction.run(ByteArrayClassLoader.java:686) net.bytebuddy.dynamic.loading.ByteArrayClassLoader$ClassDefinitionAction.run(ByteArrayClassLoader.java:638) java.base/java.security.AccessController.doPrivileged(AccessController.java:399) net.bytebuddy.dynamic.loading.ByteArrayClassLoader.doPrivileged(ByteArrayClassLoader.java) net.bytebuddy.dynamic.loading.ByteArrayClassLoader.findClass(ByteArrayClassLoader.java:405) java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587) java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) java.base/java.lang.Class.forName0(Native Method) java.base/java.lang.Class.forName(Class.java:467) net.bytebuddy.dynamic.loading.ByteArrayClassLoader.load(ByteArrayClassLoader.java:360) net.bytebuddy.dynamic.loading.ClassLoadingStrategy$Default$WrappingDispatcher.load(ClassLoadingStrategy.java:367) net.bytebuddy.dynamic.loading.ClassLoadingStrategy$Default.load(ClassLoadingStrategy.java:148) net.bytebuddy.dynamic.TypeResolutionStrategy$Passive.initialize(TypeResolutionStrategy.java:101) net.bytebuddy.dynamic.DynamicType$Default$Unloaded.load(DynamicType.java:6317) io.appium.java_client.proxy.Helpers.createProxy(Helpers.java:122) io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:86) io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:61) io.appium.java_client.pagefactory.AppiumFieldDecorator.proxyForAnElement(AppiumFieldDecorator.java:248) io.appium.java_client.pagefactory.AppiumFieldDecorator.access$000(AppiumFieldDecorator.java:63) io.appium.java_client.pagefactory.AppiumFieldDecorator$1.proxyForLocator(AppiumFieldDecorator.java:147) org.openqa.selenium.support.pagefactory.DefaultFieldDecorator.decorate(DefaultFieldDecorator.java:61) io.appium.java_client.pagefactory.AppiumFieldDecorator.decorate(AppiumFieldDecorator.java:186) org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:109) org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:101) Automation.Utils.MobilePage.<init>(MobilePage.java:101) Automation.Access.customer.mobile.LoginPageMobile.<init>(LoginPageMobile.java:89) Automation.Access.customer.helpers.AccessHelperMobile.doLogin(AccessHelperMobile.java:61) Automation.Treasury.TreasuryTeam1.mobile.sgd.TestSgdLocalTransfer.testInstantTransfer(TestSgdLocalTransfer.java:25) java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.base/java.lang.reflect.Method.invoke(Method.java:568) org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139) org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:664) org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:227) org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:957) org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:200) org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148) org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) java.base/java.util.ArrayList.forEach(ArrayList.java:1511) org.testng.TestRunner.privateRun(TestRunner.java:848) org.testng.TestRunner.run(TestRunner.java:621) org.testng.SuiteRunner.runTest(SuiteRunner.java:443) org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:481) org.testng.internal.thread.ThreadUtil.lambda$execute$0(ThreadUtil.java:58) java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) java.base/java.lang.Thread.run(Thread.java:833) Caused by: [java.lang.ClassNotFoundException: org.openqa.selenium.remote.RemoteWebElement](javascript:toggleElement('exception-1', 'block'))

I have researched, the issue related to the compatibility of Selenium and Appium. I tried many version of them but issue still happens. It's weird because issue happens with Jenkins only, in the same machine, I can run a test case successfully with the editor.

truyenaspire avatar Feb 05 '24 13:02 truyenaspire

Facing the same issue when selenium client > 4.14.1 and java client > 9.0, Java version is required to > 11.

No issue when using selenium client = 4.13.0, Java client = 8.3.0 and Java version = 1.8

there should be some compatibility issues with new version of selenium, java client and Java.

shinobi01 avatar Mar 15 '24 08:03 shinobi01

Facing the same issue with:

Platform: macOS Sonoma(Version 14.4) Chip: Apple M2 Pro JDK: 17.0.10 also tried with 21.0.1 Appium Java Client: 9.2.0 TestNG: 7.9.0 Selenium Java: 4.18.1 Appium: 2.5.1

loginWithValidCredentials_AUTHL01 : java.lang.NoClassDefFoundError: io/appium/java_client/proxy/HasMethodCallListeners
loginAndLogout_AUTHL02 : java.lang.NoClassDefFoundError: io/appium/java_client/proxy/HasMethodCallListeners

khaleeljageer avatar Mar 22 '24 08:03 khaleeljageer

Hi Team, Issue with following one while running Appium using POM(PageFactory.initElements(new AppiumFieldDecorator(driver), this); also tried with PageFactory.initElements(new AppiumFieldDecorator(driver), pageName.class);

@AndroidFindBy(id = "login") @iOSXCUITFindBy(accessibility = "login") private WebElement loginButton;

Exception throwing: java.lang.NullPointerException: Cannot invoke "org.openqa.selenium.WebElement.click()" because "this.loginButton" is null

JDK: 21.0.1 Appium Java Client: 9.2.0 TestNG: 7.9.0 Selenium Java: 4.18.1 Appium: 2.5.1 IDE: Eclipse Platform: macOS Sonoma(Version 14.4)

Note: whereas tried with all listed versions of JAVA-CLIENT and SELENIUM JAVA in maven repository As of now all versions in my pom.xml are latest ones though verified locally testng.xml where @AndroidFindBy and @iOSXCUITFindBy are working as expected, but through "mvn test exec:java" this command not letting reads the annotations and throwing with above exception of both platforms for Appium.

Whether issues are on PageFactory/annotations/versions on pom.xml, please give us some inputs to overcome this issue! Thanks in Advance Team!

sathishremitbee avatar Mar 22 '24 12:03 sathishremitbee

Hi Guys, Not sure that everyone knows it yet. Latest versions (as of now) works great. No issues for me anymore. appium/9.2.3 selenium/4.21.0 (I use java 11 but not sure it plays a key role here, didn't change jdk since I got issue till now) Cheers, Michael

peacebytes avatar Jul 24 '24 19:07 peacebytes