user20372179
user20372179

Reputation: 1

java.lang.ExceptionInInitializerError @ appium @appimfielddecorator

Hai guys I'm new to appium, please anyone can resolve this issue.

I'm getting this exception:

java.lang.ExceptionInInitializerError at

io.appium.java_client.pagefactory.u tils.ProxyFactory.getEnhanced Prox y(ProxyFactory.java:53)

: I am automating Mobile app (Android ).

So If I use

PageFactory.initElements (driver, this);

and try to find elements by using annotation as @FindBy MY CODE WORKS.

But if try to use

PageFactory.initElements (new

AppiumFieldDecorator (driver), this);

and try to find elements by using annotation as @AndroidFindBy , I'm getting exception.

My code :

public class Page1 { // page object class

public static AppiumDriver driver;

public Page1(AppiumDriver driver) {

    PageFactory.initElements(new AppiumFieldDecorator(driver), this);

    this.driver = driver;

}

@AndroidFindBy(id = "com.tva.z5:id/homeIcon")

public WebElement homeIcon;

public void logo() {

    homeIcon.click();

}

}


package appiumtests; // this is my test

import org.testng.annotations.Test;

import pages.Weyyak_Page1;

import static pages.Weyyak_Page1.driver;

public class Test1 {

@Test

public void test() throws InterruptedException {

    Page1 lg = new Page1(driver);

      lg.logo();

    Thread.sleep(5000);

}

}

I'm getting this exception :

java.lang.ExceptionInInitializerError

at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:53)

at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:33)

at io.appium.java_client.pagefactory.AppiumFieldDecorator.proxyForAnElement(AppiumFieldDecorator.java:209)

at io.appium.java_client.pagefactory.AppiumFieldDecorator.access$000(AppiumFieldDecorator.java:61)

at io.appium.java_client.pagefactory.AppiumFieldDecorator$1.proxyForLocator(AppiumFieldDecorator.java:100)

at org.openqa.selenium.support.pagefactory.DefaultFieldDecorator.decorate(DefaultFieldDecorator.java:63)

at io.appium.java_client.pagefactory.AppiumFieldDecorator.decorate(AppiumFieldDecorator.java:147)

at org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:111)

at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:103)

at pages.Weyyak_Page1.<init>(Weyyak_Page1.java:15)

at appiumtests.Weyyak_Test1.test(Weyyak_Test1.java:14)

at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)

at java.base/java.lang.reflect.Method.invoke(Method.java:577)

at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)

at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)

at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)

at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)

at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:962)

at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)

at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)

at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)

at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

at org.testng.TestRunner.privateRun(TestRunner.java:806)

at org.testng.TestRunner.run(TestRunner.java:601)

at org.testng.SuiteRunner.runTest(SuiteRunner.java:433)

at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:427)

at org.testng.SuiteRunner.privateRun(SuiteRunner.java:387)

at org.testng.SuiteRunner.run(SuiteRunner.java:330)

at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)

at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)

at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)

at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)

at org.testng.TestNG.runSuites(TestNG.java:1099)

at org.testng.TestNG.run(TestNG.java:1067)

at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:66)

at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:109)

Caused by: net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @79698539

at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:464)

at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:339)

at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:96)

at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94)

at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)

at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)

at net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)

at net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)

at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:119)

at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:294)

at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:221)

at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:174)

at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:153)

at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:73)

... 36 more

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @79698539

at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)

at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)

at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:200)

at java.base/java.lang.reflect.Method.setAccessible(Method.java:194)

at net.sf.cglib.core.ReflectUtils$1.run(ReflectUtils.java:61)

at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)

at net.sf.cglib.core.ReflectUtils.<clinit>(ReflectUtils.java:52)

at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:243)

at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)

at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:332)

... 48 more

Upvotes: 0

Views: 278

Answers (1)

Achal Trivedi
Achal Trivedi

Reputation: 1

I have changes in your code ,check this code below :-

public static AndroidDriver driver;

 public Page1(AndroidDriver driver) {
     
    this.driver = driver;
    PageFactory.initElements(driver, this)
}

  @FindBy(id = "com.tva.z5:id/homeIcon")
  public WebElement homeIcon;

 public void logo() {

    homeIcon.click();
}

Upvotes: 0

Related Questions