1

我正在将我的 Solr 测试项目迁移到 Solr 4.1,但我无法覆盖 getSchemaFile() 和 getSolrConfigFile() 方法。

我收到以下错误:

[错误] my_path/SolrConfigTest.java:[63,15] 错误:SolrConfigTest 中的 getSchemaFile() 无法覆盖 SolrTestCaseJ4 中的 getSchemaFile()

[错误] 被覆盖的方法是静态的

[错误] my_path/SolrConfigTest.java:[62,1] 错误:方法没有覆盖或实现超类型中的方法

[错误] my_path/SolrConfigTest.java:[68,15] 错误:SolrConfigTest 中的 getSolrConfigFile() 无法覆盖 SolrTestCaseJ4 中的 getSolrConfigFile()

[错误] 被覆盖的方法是静态的

[错误] my_path/SolrConfigTest.java:[67,1] 错误:方法没有覆盖或实现超类型中的方法

该文件如下所示:

import org.apache.log4j.Logger;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
import org.apache.solr.client.solrj.request.CoreAdminRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.util.AbstractSolrTestCase;

public class SolrConfigTest extends AbstractSolrTestCase {
    String container = "mycore";

    @Override
    public String getSolrHome() {
        return System.getProperty("user.dir") + "/resources/";
    }

    @Override
    public String getSchemaFile() {
        return getSolrHome() + container + "/conf/schema.xml";
    }

    @Override
    public String getSolrConfigFile() {
        return getSolrHome() + container + "/conf/solrconfig.xml";
    }

    @Before
    @Override
    public void setUp() throws Exception {
        super.setUp();
        CoreContainer.Initializer initializer = new CoreContainer.Initializer();
        coreContainer = initializer.initialize();
        server = new EmbeddedSolrServer(coreContainer, "mycore");
    }
}

对于 maven,我的 pom.xml 文件具有以下依赖项:

<dependencies>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-core</artifactId>
        <version>4.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.solr</groupId>
        <artifactId>solr-core</artifactId>
        <version>4.1.0</version>
    </dependency>
    <dependency>
       <groupId>org.apache.solr</groupId>
       <artifactId>solr-solrj</artifactId>
       <version>4.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.solr</groupId>
        <artifactId>solr-test-framework</artifactId>
        <version>4.1.0</version>
    </dependency>
</dependencies>

有人知道我缺少什么吗?

4

2 回答 2

0

据我所知,Solr 4.1 中的 AbstractSolrTestCase 类不再提供方法 getSchemaFile() 和 getSolrConfigFile() 来覆盖。

一旦 getSolrHome() 指向定义 Solr 的文件夹(您可以在其中找到 solr.xml 文件),就会在 mycore/conf 中找到 schema.xml 和 solrconfig.xml 文件。

于 2013-03-14T12:12:12.570 回答
-1

或者您可以覆盖 SolrTestCaseJ4 类的 initCore(String config, String schema, String solrHome) 方法,以便您可以根据您的配置设置配置文件和模式文件。

于 2014-10-31T06:27:52.213 回答