我尝试从SOLR 4.8.1
升级到SOLR 4.9
。当我尝试使用SolrTestCaseJ4
运行时,我们的一些与4.8.1
一起使用的测试用例(使用SOLR 4.9
框架)失败了。
我试图找出(并修复)测试用例。
我们正在使用maven surefire
插件和JUNIT
来运行测试。
Error:
java.lang.IllegalAccessError: class org.apache.lucene.codecs.diskdv.DiskDocValuesFormat$1 cannot access its superclass org.apache.lucene.codecs.lucene45.Lucene45DocValuesConsumer
at __randomizedtesting.SeedInfo.seed([3C587EB0DE791716]:0)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2585)
at java.lang.Class.getConstructor0(Class.java:2885)
at java.lang.Class.newInstance(Class.java:350)
at org.apache.lucene.util.NamedSPILoader.reload(NamedSPILoader.java:67)
at org.apache.lucene.codecs.DocValuesFormat.reloadDocValuesFormats(DocValuesFormat.java:121)
at org.apache.solr.core.SolrResourceLoader.reloadLuceneSPI(SolrResourceLoader.java:205)
at org.apache.solr.core.SolrConfig.initLibs(SolrConfig.java:587)
at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:162)
at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:139)
at org.apache.solr.util.TestHarness.createConfig(TestHarness.java:74)
at org.apache.solr.SolrTestCaseJ4.createCore(SolrTestCaseJ4.java:553)
at org.apache.solr.SolrTestCaseJ4.initCore(SolrTestCaseJ4.java:546)
at org.apache.solr.SolrTestCaseJ4.initCore(SolrTestCaseJ4.java:366)
从SOLR 4.9
发行说明,&#34; 从Solr 4.8升级&#34;,我看到:
支持DiskDocValuesFormat(即:使用。配置的fieldTypes) docValuesFormat =&#34; Disk&#34;)由于性能不佳而被删除。
因此,lucene-codecs-4.9.0.jar
没有&#34; DiskDocValuesFormat$1
&#34;这个课程有点道理。
问题是:我该怎么做才能摆脱这个错误?因为它似乎来自SolrTestCaseJ4
内部。我们的代码库不会将DiskDocValuesFormat
用于任何fieldType。
根据我的观察,SolrTestCaseJ4
似乎将不同的编解码器(随机)传递给测试用例,但无论选择哪种编解码器,错误总是与上面提到的相同。
我在lucene论坛上发现了以下内容,它提到了我在相同的错误,但在不同的背景下。但是,没有提到解决方案。见链接:
Have anyone used Automatic Phrase Tokenization (AutoPhrasingTokenFilterFactory) ?
请告知我做错了什么。
谢谢, 斯里兰卡