我正在尝试使用包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,请帮助解决导致问题的原因
答案 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(搜索“按配置依赖”)