Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java elasticsearch 6 ESIntegTestCase“;已设置代码库属性“0”;_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java elasticsearch 6 ESIntegTestCase“;已设置代码库属性“0”;

Java elasticsearch 6 ESIntegTestCase“;已设置代码库属性“0”;,java,elasticsearch,Java,elasticsearch,我正在尝试从2.3.4升级到ES 6.2 以前,我们使用NodeBuilder并运行本地ES节点来测试代码。如果可能的话,我宁愿把它换成ESINTEGTEST用例 但是,当我尝试运行集成测试时,会出现以下错误: 位于org.elasticsearch.bootstrap.BootstrapForTesting.(BootstrapForTesting.java:164) 位于org.elasticsearch.test.ESTestCase(ESTestCase.java:190) 位于jav

我正在尝试从2.3.4升级到ES 6.2

以前,我们使用NodeBuilder并运行本地ES节点来测试代码。如果可能的话,我宁愿把它换成ESINTEGTEST用例

但是,当我尝试运行集成测试时,会出现以下错误:


位于org.elasticsearch.bootstrap.BootstrapForTesting.(BootstrapForTesting.java:164)
位于org.elasticsearch.test.ESTestCase(ESTestCase.java:190)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:348)
位于com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:592)
原因:java.lang.IllegalStateException:codebase属性已设置:codebase.metrics-core->file:/Users/me/.m2/repository/io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.jar,无法设置为file:/Users/me/.m2/repository/com/yammer/metrics/core/2.2.0/metrics-core.jar
位于org.elasticsearch.bootstrap.Security.readPolicy(Security.java:236)
位于org.elasticsearch.bootstrap.BootstrapForTesting.(BootstrapForTesting.java:139)
... 4更多

这意味着什么?我如何修复它

我的测试类被注释为:
@RunWith(com.carrotsearch.randomizedtesting.RandomizedRunner.class)
并扩展
ESIntegTestCase
,如果这有帮助的话

谢谢大家的帮助

根据这个问题:除非您正在测试插件或类似的东西,否则ESIntegTestCase也不应该真正被使用(请参阅此处的回复帖子:)

请参见此处了解更多信息:

我现在发现的与elasticsearch集成测试的最佳方法是在讨论帖子中提到的:使用testcontainers elasticsearch()

您需要在运行测试的机器上安装docker,但它会自动拉取所需的docker映像,启动容器并在最后再次将其拆下。

根据此问题:除非您正在测试插件或类似的东西,否则也不应再真正使用ESIntegTestCase(请参阅此处的回复帖子:)

请参见此处了解更多信息:

我现在发现的与elasticsearch集成测试的最佳方法是在讨论帖子中提到的:使用testcontainers elasticsearch()


您需要在运行测试的机器上安装docker,但它会自动拉取所需的docker映像,启动容器并在最后再次将其拆下。

如果开发插件仍然需要嵌入式ES,那么设置系统属性
-Dtests.gradle=false
可能可以解决此问题

由于BootstrapForTesting.java L175包含:

if (System.getProperty("tests.gradle") == null) {
  addClassCodebase(codebases, "plugin-classloader", "org.elasticsearch.plugins.ExtendedPluginsClassLoader");
  addClassCodebase(codebases, "elasticsearch-secure-sm", "org.elasticsearch.secure_sm.SecureSM");
}

如果开发插件仍然需要嵌入式ES,那么设置系统属性
-Dtests.gradle=false可以解决这个问题

由于BootstrapForTesting.java L175包含:

if (System.getProperty("tests.gradle") == null) {
  addClassCodebase(codebases, "plugin-classloader", "org.elasticsearch.plugins.ExtendedPluginsClassLoader");
  addClassCodebase(codebases, "elasticsearch-secure-sm", "org.elasticsearch.secure_sm.SecureSM");
}