I get a AndroidRuntime about Didn't find class "java.lang.ClassValue" while I use lucene 7.2,1 in android [LUCENE-8274]
- Dominant language
- Java
- Stars
- 3.6k
- Forks
- 1.4k
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 88
Description
I find that javaversion_1.8 can be use in android-26, so I try to replace lucene4.7.2 into lucene7.2.1 in my android project. but I get a AndroidRuntime
This is my config:
compileOptions
{ sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
dependencies
{ compile 'com.android.support:multidex:1.0.1' compile 'org.apache.lucene:lucene-core:7.2.1' compile 'org.apache.lucene:lucene-analyzers-common:7.2.1' compile 'org.apache.lucene:lucene-analyzers-smartcn:7.2.1' compile 'org.apache.lucene:lucene-queries:7.2.1' compile 'org.apache.lucene:lucene-queryparser:7.2.1' }
it goes well when Build APK , but got a AndroidRuntime like below:
04-25 10:20:15.129 13251 13273 E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/lang/ClassValue;
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.analysis.standard.StandardAnalyzer.createComponents(StandardAnalyzer.java:103)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.analysis.AnalyzerWrapper.createComponents(AnalyzerWrapper.java:134)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:198)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.util.QueryBuilder.createFieldQuery(QueryBuilder.java:240)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.queryparser.classic.QueryParserBase.newFieldQuery(QueryParserBase.java:475)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.queryparser.classic.QueryParserBase.getFieldQuery(QueryParserBase.java:467)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.queryparser.classic.MultiFieldQueryParser.getFieldQuery(MultiFieldQueryParser.java:154)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.queryparser.classic.QueryParserBase.handleBareTokenQuery(QueryParserBase.java:830)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.queryparser.classic.QueryParser.Term(QueryParser.java:469)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:355)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:244)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.queryparser.classic.QueryParser.TopLevelQuery(QueryParser.java:215)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:109)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at com.android.globalsearch.model.index.ContactsIndexHelper.getQuery(ContactsIndexHelper.java:713)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at com.android.globalsearch.model.index.IndexHelper.initQuery(IndexHelper.java:496)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at com.android.globalsearch.model.task.search.SearchLocalTask$4.run(SearchLocalTask.java:342)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at java.lang.Thread.run(Thread.java:764)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "java.lang.ClassValue" on path: DexPathList[[zip file "/data/app/com.android.globalsearch-1nMSgWTRPQ5vt_9Co6iFaw==/base.apk"],nativeLibraryDirectories=[/data/app/com.android.globalsearch-1nMSgWTRPQ5vt_9Co6iFaw==/lib/arm, /data/app/com.andriod.globalsearch-1nMSgWTRPQ5vt_9Co6iFaw==/base.apk!/lib/armeabi, /system/lib, /vendor/lib]]
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
04-25 10:20:15.129 13251 13273 E AndroidRuntime: ... 19 more
这个问题跟stackoverflow上的这个问题一样:
---
Migrated from [LUCENE-8274](https://issues.apache.org/jira/browse/LUCENE-8274) by zhangzhenan, updated Apr 27 2018
Environment:
```
android-26
android studio
buildToolsVersion "28.0.0-rc1"
minSdkVersion 26
targetSdkVersion 26
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
```
Contributor guide
Research direction
Reproduce the Android-26 failure with the listed Lucene 7.2.1 dependencies, then trace the stack from StandardAnalyzer.createComponents through QueryBuilder and QueryParser. Compare the runtime's available Java classes with the ClassValue reference and document or test a compatible outcome where the reported NoClassDefFoundError no longer occurs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, java
- Domain
- mobile-dev, search
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100