对象测试不是包org.elasticsearch的成员

时间:2017-09-16 11:17:50

标签: java scala sbt elasticsearch-5

我正在尝试使用包ESTestCase中的课程org.elasticsearch.test.ESTestCase 我正在关注此链接 - > https://www.elastic.co/guide/en/elasticsearch/reference/current/using-elasticsearch-test-classes.html 我在这里使用sbt项目是库依赖项是build.sbt文件

"org.elasticsearch" % "elasticsearch" % "5.6.0",
"org.elasticsearch.client" % "transport" % "5.6.0",
                "org.apache.lucene" % "lucene-expressions" % "6.6.0",
                "org.apache.logging.log4j" % "log4j-core" % "2.9.0",
                "org.apache.lucene" % "lucene-test-framework" % "6.6.0" % "test",
                "org.elasticsearch.test" % "framework" % "5.6.0" % "test",

当我尝试导入这两行时

import org.elasticsearch.test.ESTestCase
import org.elasticsearch.transport.MockTransportClient

eclipse没有显示任何编译时错误,但在sbt-compile

上出现了以下错误

[

error] /myproject/app/CampaignController.scala:44: object test is not a member of package org.elasticsearch
[error] import org.elasticsearch.test.ESTestCase
[error]                          ^
[error] /myproject/app/CampaignController.scala:45: object MockTransportClient is not a member of package org.elasticsearch.transport
[error] import org.elasticsearch.transport.MockTransportClient
[error]        ^

我正在使用ElasticSearch 5.6.0,请帮助解决导致问题的原因

1 个答案:

答案 0 :(得分:1)

问题出在% "test"依赖项中。 如果依赖关系以% "test"结尾,则它将仅针对您的测试进行编译。

通常假设您将在测试模块中使用org.elasticsearch.test.ESTestCase和其他测试内容(src / test / scala或类似的东西)。

您可能正在将弹性搜索测试依赖项导入应用程序(src / main ...),这就是您收到错误的原因。

如果您在测试模块(src / test / scala)中导入它们,它将起作用。

但是如果你真的需要将它导入你的应用程序代码,那么就是 从依赖项中删除% "test"

...
"org.apache.lucene" % "lucene-test-framework" % "6.6.0",
"org.elasticsearch.test" % "framework" % "5.6.0"
...

这是一个sbt doc解释它: http://www.scala-sbt.org/0.13/docs/Library-Dependencies.html(搜索“按配置依赖”)

相关问题