AndroidSupportComponents icon indicating copy to clipboard operation
AndroidSupportComponents copied to clipboard

v28.0.0.1 : Xamarin.Android Designer, Java ClassNotFound Exception with Support Widgets

Open HakanCelikMKA opened this issue 6 years ago • 2 comments

Xamarin.Android Version:

Xamarin 4.12.3.81 (d15-9@780082716) Xamarin Designer 4.16.13 (45a16efd4) Xamarin.Android SDK 9.1.7.0 (HEAD/ba9da7a76)

Operating System & Version (eg: Mac OSX 10.11):

Microsoft Windows 10 Enterprise x64 (10.0.17134 Build 17134)

Visual Studio Version

Microsoft Visual Studio Community 2017 (Version 15.9.10) VisualStudio.15.Release/15.9.10+28307.557

Support Libraries Version (eg: 23.3.0):

28.0.0.1

Describe your Issue:

I've started to get java.lang.ClassNotFoundExceptions in the Xamarin.Android designer for the widgets in Android.Support.V7.Widget (for example SwitchCompat) after I upgraded to v28.0.0.1.

When I reverted back to v27.0.2.1 this problem disappeared.

Steps to Reproduce (with link to sample solution if possible):

  • Upgrade to 28.0.0.1
  • Open an Android Layout containing a widget from support library
  • Designer will show an error box in the place of the widget
  • Click show error
  • A java.lang.ClassNotFoundException stack trace will be displayed

Steps to Resolve:

  • Close the solution in Visual Studio
  • Revert references back to v27.0.2.1 by editing the .csproj file
  • Delete bin and obj folders
  • Open the solution in Visual Studio
  • Do a full rebuild

Also, I've checked the issue #140. The solution mentioned there also seems to solve my issue too. I've changed TargetFrameworkVersion from v9.0 to v8.1 and designer seems to work OK so far. If it is an option for you too, this could be your solution for the time being.

Include any relevant Exception Stack traces, build logs, adb logs:

C:\Users\xxxxx\AppData\Local\Xamarin\Logs\15.0\AndroidDesigner-2019-03-28__12-28-42.6368.log

[2019-03-28 12:29:04.5] Renderer >> 4 [monodroid] SWITCHING CONTEXT [2019-03-28 12:29:04.5] Renderer >> INFO: Trying to load class android.support.v7.widget.SwitchCompat [2019-03-28 12:29:04.5] Renderer >> [2019-03-28 12:29:04.5] Renderer >> TODO: getParser2 [2019-03-28 12:29:04.5] Renderer >> TODO: getParser2 [2019-03-28 12:29:04.5] Renderer >> ERROR: An exception occured while loading control android.support.v7.widget.SwitchCompat [2019-03-28 12:29:04.5] Renderer >> ERROR: java.lang.reflect.InvocationTargetException [2019-03-28 12:29:04.5] Renderer >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [2019-03-28 12:29:04.5] Renderer >> at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [2019-03-28 12:29:04.5] Renderer >> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [2019-03-28 12:29:04.5] Renderer >> at java.lang.reflect.Constructor.newInstance(Constructor.java:423) [2019-03-28 12:29:04.5] Renderer >> at mono.android.SessionProjectCallback.instantiateClass(SessionProjectCallback.java:404) [2019-03-28 12:29:04.5] Renderer >> at mono.android.SessionProjectCallback.loadView(SessionProjectCallback.java:204) [2019-03-28 12:29:04.5] Renderer >> at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:337) [2019-03-28 12:29:04.5] Renderer >> at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:348) [2019-03-28 12:29:04.5] Renderer >> at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:248) [2019-03-28 12:29:04.5] Renderer >> at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) [2019-03-28 12:29:04.5] Renderer >> at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:863) [2019-03-28 12:29:04.5] Renderer >> at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) [2019-03-28 12:29:04.5] Renderer >> at android.view.LayoutInflater.rInflate(LayoutInflater.java:837) [2019-03-28 12:29:04.5] Renderer >> at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) [2019-03-28 12:29:04.5] Renderer >> at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:866) [2019-03-28 12:29:04.5] Renderer >> at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) [2019-03-28 12:29:04.5] Renderer >> at android.view.LayoutInflater.rInflate(LayoutInflater.java:837) [2019-03-28 12:29:04.5] Renderer >> at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) [2019-03-28 12:29:04.5] Renderer >> at android.view.LayoutInflater.inflate(LayoutInflater.java:515) [2019-03-28 12:29:04.5] Renderer >> at android.view.LayoutInflater.inflate(LayoutInflater.java:394) [2019-03-28 12:29:04.5] Renderer >> at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:325) [2019-03-28 12:29:04.5] Renderer >> at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:384) [2019-03-28 12:29:04.5] Renderer >> at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:270) [2019-03-28 12:29:04.5] Renderer >> at mono.android.DesignerSession.load(DesignerSession.java:307) [2019-03-28 12:29:04.5] Renderer >> at mono.android.DesignerSession.processMessage(DesignerSession.java:675) [2019-03-28 12:29:04.5] Renderer >> at mono.android.MessageListener.executeMessage(MessageListener.java:88) [2019-03-28 12:29:04.5] Renderer >> at mono.android.MessageListener$Runner.run(MessageListener.java:44) [2019-03-28 12:29:04.5] Renderer >> at java.lang.Thread.run(Thread.java:748) [2019-03-28 12:29:04.5] Renderer >> Caused by: java.lang.NoClassDefFoundError: android/view/View$OnUnhandledKeyEventListener [2019-03-28 12:29:04.5] Renderer >> at android.support.v7.widget.SwitchCompat.setChecked(SwitchCompat.java:1066) [2019-03-28 12:29:04.5] Renderer >> at android.widget.CompoundButton.<init>(CompoundButton.java:117) [2019-03-28 12:29:04.5] Renderer >> at android.widget.CompoundButton.<init>(CompoundButton.java:90) [2019-03-28 12:29:04.5] Renderer >> at android.support.v7.widget.SwitchCompat.<init>(SwitchCompat.java:218) [2019-03-28 12:29:04.5] Renderer >> at android.support.v7.widget.SwitchCompat.<init>(SwitchCompat.java:204) [2019-03-28 12:29:04.5] Renderer >> ... 28 more [2019-03-28 12:29:04.5] Renderer >> Caused by: java.lang.ClassNotFoundException [2019-03-28 12:29:04.5] Renderer >> at mono.android.LibraryClassLoader.loadAndConvertClass(LibraryClassLoader.java:89) [2019-03-28 12:29:04.5] Renderer >> at mono.android.LibraryClassLoader.findClass(LibraryClassLoader.java:57) [2019-03-28 12:29:04.5] Renderer >> at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [2019-03-28 12:29:04.5] Renderer >> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [2019-03-28 12:29:04.5] Renderer >> ... 33 more

HakanCelikMKA avatar Mar 28 '19 09:03 HakanCelikMKA

I have asked Designer team and according to them it was fixed this in 8.0/d16.0.

I'm experiencing different behavior - namely design surface is blank (nothing is rendered) and they advised me to ask Xamarin.Android core team. Waiting for the answer.

moljac avatar Mar 29 '19 09:03 moljac

Please let me know if there is anything I can do to help with this. Would providing other Xamarin logs be helpful ? Or I can test with different settings etc. and report the results.

HakanCelikMKA avatar Mar 29 '19 11:03 HakanCelikMKA