Appium script throws "Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Type" for android application

Appium script throws "Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Type" for android application

请在下面找到我的代码并帮助我摆脱异常

我正在使用 Appium 版本 1.17.1,cglib3.3.0 jar,java-client-7.3.0 jar,Selenium-java-3.141.59 with project作为 java 项目

请找到下面的代码

HybridBase.java

  public class HybridBase {

        public static AndroidDriver<AndroidElement> capabilities(String device) throws MalformedURLException
        {
            AndroidDriver<AndroidElement> driver;
            File f = new File("src");
            File fs = new File(f,"ApiDemos-debug.apk");
            DesiredCapabilities cap=new DesiredCapabilities();

            if(device.equals("real")){
                cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android"); 
            }
            else if(device.equals("emulator")){
                cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android");
            }
            cap.setCapability(MobileCapabilityType.UDID, "3200f0fdb4e8753b");

        //  cap.setCapability(MobileCapabilityType.UDID, "3200f0fdb4e8753b");
            cap.setCapability(MobileCapabilityType.FULL_RESET, false);
        cap.setCapability(MobileCapabilityType.NO_RESET, true);

            cap.setCapability(MobileCapabilityType.APP, fs.getAbsolutePath());
            driver=new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"),cap);
            return driver;


        }

    }

Basic.java

public class Basic extends HybridBase {

    public static void main(String[] args) throws MalformedURLException {
        // TODO Auto-generated method stub

        AndroidDriver<AndroidElement> driver = capabilities("real");

        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);


        HomePage h = new HomePage(driver);

        // driver.findElementByXPath("//android.widget.TextView[@content-desc='Preference']").click();
        //driver.findElementByXPath("//android.widget.TextView[@text='Preference']").click();

        h.preferences.click();

        Preferences p =new Preferences(driver);

        //driver.findElementByXPath("//android.widget.TextView[@text='3. Preference dependencies']").click();

        p.dependencies.click();
        driver.findElementById("android:id/checkbox").click();
        driver.findElementByXPath("(//android.widget.RelativeLayout)[2]").click();
        driver.findElementByClassName("android.widget.EditText").sendKeys("Karthi");
        driver.findElementsByClassName("android.widget.Button").get(1).click();
    }

}

HomePage.java

public class HomePage {

    public HomePage(AppiumDriver driver) {
        PageFactory.initElements(new AppiumFieldDecorator(driver), this);
        // PageFactory.initElements(driver, this);
    }

    @AndroidFindBy(xpath = "//android.widget.TextView[@text='Preference']")
    public WebElement preferences;

}

Preferences.java

public class Preferences {

    public Preferences(AppiumDriver driver) {
        PageFactory.initElements(new AppiumFieldDecorator(driver), this);
        // PageFactory.initElements(driver, this);
    }

    @AndroidFindBy(xpath = "//android.widget.TextView[@text='3. Preference dependencies']")
    public WebElement dependencies;

}

结果:应用程序已打开但未执行任何操作并抛出以下异常

得到以下异常

Jun 12, 2020 8:35:55 AM io.appium.java_client.remote.AppiumCommandExecutor lambda[=14=]
INFO: Detected dialect: W3C
Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Type
    at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:184)
    at net.sf.cglib.core.KeyFactory.<clinit>(KeyFactory.java:72)
    at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:72)
    at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:52)
    at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:33)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator.proxyForAnElement(AppiumFieldDecorator.java:222)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator.access[=14=](AppiumFieldDecorator.java:220)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator.proxyForLocator(AppiumFieldDecorator.java:105)
    at org.openqa.selenium.support.pagefactory.DefaultFieldDecorator.decorate(DefaultFieldDecorator.java:62)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator.decorate(AppiumFieldDecorator.java:160)
    at org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:113)
    at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:105)
    at pageobjects.HomePage.<init>(HomePage.java:15)
    at Basic.main(Basic.java:19)
Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type
    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)
    ... 14 more

请帮助我摆脱上述异常。

提前致谢

我通过添加 asm-6.1 jar 和添加 cglib-3.2.6 jar 而不是 cglib-3.3.0 jar 得到了上述问题的解决方案

Link 对于 cglib jar - https://github.com/cglib/cglib/releases Link 对于 asm-6.1 jar - http://download.forge.ow2.org/asm/

如果需要任何说明,请随时联系...

This issue occurs due to the incompatible jar. try to use the latest jar from the below  link,

https://github.com/cglib/cglib/releases 
http://download.forge.ow2.org/asm/
http://download.forge.ow2.org/

References
https://github.com/appium/appium/issues/9699

这可能是因为 asm jar 不可用。可以从下面link,

下载

http://download.forge.ow2.org/asm/