简体   繁体   English

java.lang.NoSuchMethodException: <init>

[英]java.lang.NoSuchMethodException: <init>

I checked everything on my debug build and everything works fine, but when I generate Signed Apk I get this error: 我检查了调试版本中的所有内容,一切正常,但是当我生成Signed Apk时,出现此错误:

java.lang.NoSuchMethodException: <init> [interface org.simpleframework.xml.core.Contact, interface org.simpleframework.xml.Attribute, class org.simpleframework.xml.stream.Format]
java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [interface org.simpleframework.xml.core.Contact, interface org.simpleframework.xml.Attribute, class org.simpleframework.xml.stream.Format]
at retrofit2.converter.simplexml.SimpleXmlRequestBodyConverter.convert(SimpleXmlRequestBodyConverter.java:43)
at retrofit2.converter.simplexml.SimpleXmlRequestBodyConverter.convert(SimpleXmlRequestBodyConverter.java:26)
at retrofit2.ParameterHandler$Body.apply(ParameterHandler.java:297)
at retrofit2.ServiceMethod.toRequest(ServiceMethod.java:109)
at retrofit2.OkHttpCall.createRawCall(OkHttpCall.java:178)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:162)
at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$RequestArbiter.request(RxJavaCallAdapterFactory.java:171)
at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber$1.request(OperatorSubscribeOn.java:109)
at rx.Subscriber.setProducer(Subscriber.java:211)
at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.setProducer(OperatorSubscribeOn.java:105)
at rx.Subscriber.setProducer(Subscriber.java:205)
at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:152)
at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:138)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.call(OperatorSubscribeOn.java:100)
at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:230)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NoSuchMethodException: <init> [interface org.simpleframework.xml.core.Contact, interface org.simpleframework.xml.Attribute, class org.simpleframework.xml.stream.Format]
at java.lang.Class.getConstructor(Class.java:531)
at java.lang.Class.getConstructor(Class.java:495)
at org.simpleframework.xml.core.LabelExtractor$LabelBuilder.getConstructor(LabelExtractor.java:426)

If I get it right this is the ProGuard problem, but I don't know how to fix it. 如果我做对了,这就是ProGuard问题,但是我不知道如何解决。 Any advices please? 有什么建议吗?

Okay, I found the solution, this code in the Proguard.rules: 好的,我在Proguard.rules中找到了解决方案,此代码:

-keep public class org.simpleframework.**{ *; }
-keep class org.simpleframework.xml.**{ *; }
-keep class org.simpleframework.xml.core.**{ *; }
-keep class org.simpleframework.xml.util.**{ *; }

As a point on Den's answer : 关于Den的回答
it may be enough to specify 可能足以指定

-keep class org.simpleframework.xml.**{ *; }

without the rest 3 lines from the original answer. 剩下的三行则不包含原始答案。

According to the ProGuard manual : 根据ProGuard手册

** matches any part of a class name, possibly containing any number of package separators. **匹配类名的任何部分,可能包含任意数量的包分隔符。 For example, **.Test matches all Test classes in all packages except the root package. 例如, **.Test匹配除根包以外的所有包中的所有Test类。 Or, com.example.** matches all classes in "com.example" and in its subpackages. 或者, com.example.**所有类匹配“com。示例”,并在其子包。

Proposed solution may not cover the same set of cases since it doesn't include public classes in the package (that is one level higher) covered by -keep public class org.simpleframework.**{ *; } 提议的解决方案可能不会涵盖同一组情况,因为它在-keep public class org.simpleframework.**{ *; }所涵盖的程序包中不包含公共类(高一级) -keep public class org.simpleframework.**{ *; } -keep public class org.simpleframework.**{ *; } (from the original answer). -keep public class org.simpleframework.**{ *; } (来自原始答案)。

However, in the 1st line of the provided stack trace there are only classes from org.simpleframework.xml... package, not from the higher-level package. 但是,在提供的堆栈跟踪的第一行中,只有org.simpleframework.xml...包中的类,而不是更高级别的包中的类。

Having similar problem: 有类似的问题:

java.lang.NoSuchMethodException: <init> [
interface org.simpleframework.xml.core.Contact, 
interface org.simpleframework.xml.ElementMap, 
class org.simpleframework.xml.stream.Format]

I solved it by adding just one line to ProGuard rules. 我只需添加一行 ProGuard的规则解决了这个问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.NoSuchMethodException:AffirmativeBased。 <init> () - java.lang.NoSuchMethodException: AffirmativeBased.<init>() Kotlin java.lang.NoSuchMethodException:<init> ()</init> - Kotlin java.lang.NoSuchMethodException: <init>() java.lang.NoSuchMethodException - java.lang.NoSuchMethodException java.lang.NoSuchMethodException:[Lcom.dn.vo.User;。 <init> () - java.lang.NoSuchMethodException: [Lcom.dn.vo.User;.<init>() java.lang.NoSuchMethodException:package.ClassName。<init> () 使用 Class<!--?--></init> - java.lang.NoSuchMethodException : package.ClassName.<init>() Using Class<?> java.lang.NoSuchMethodException:userAuth.User。<init> ()</init> - java.lang.NoSuchMethodException: userAuth.User.<init>() 摘要解析器错误java.lang.NoSuchMethodException:员工。 <init> () - digester parser error java.lang.NoSuchMethodException: Employee.<init>() 与SAAgent(三星附件)java.lang.NoSuchMethodException的Proguard问题: <init> [] - Proguard issue with SAAgent(Samsung Accessory) java.lang.NoSuchMethodException: <init> [] Hadoop错误中的自定义分区错误java.lang.NoSuchMethodException:- <init> () - custom partitioner in Hadoop error java.lang.NoSuchMethodException:- <init>() Java - java.lang.NoSuchMethodException - Java - java.lang.NoSuchMethodException
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM