在向用Scala编写的Play 2.2应用程序添加依赖项时,我发现我不知道导入路径是如何实际定义的,或者在哪里找到它。
例如,我将此依赖项添加到我的Build.scala文件中,如下所示:
val appDependencies = Seq(
"nl.rhinofly" %% "play-s3" % "4.0.0",
...
)
考虑到这一点,我认为导入将是' nl.rhinofly.play_s3&#39 ;;当我查看我的缓存时,这似乎证实了这一点:
/home/immauser/.ivy2/cache/nl.rhinofly/play-s3_2.10
但是,使用' nl编译时导入错误':
import nl.rhinofly.play_s3._
然而,这有效:
import fly.play.s3._
我的问题是:只考虑缓存中的依赖关系和材料,如何确定正确的导入路径是" fly.play.s3 ._"?人们在哪里找到这些数据?
答案 0 :(得分:4)
TL; DR :您无法确定依赖关系组和名称的导入路径 - 两者无关。两者之间的任何相关性都是用于命名Jars的约定的结果,但它不以任何方式强制执行,并不总是遵守,当然也不能假设。< / p>
<强>详情:
可以做的是在任何现代IDE(例如IntelliJ,Eclipse)或使用命令行jar tf
内检查给定jar的内容,例如:
$ jar tf ~/.ivy2/cache/org.mockito/mockito-core/jars/mockito-core-1.9.5.jar
结果将是jar中所有文件的列表,例如:
...
org/mockito/Answers.class
org/mockito/Answers.java
org/mockito/ArgumentCaptor.class
org/mockito/ArgumentCaptor.java
org/mockito/ArgumentMatcher.class
org/mockito/ArgumentMatcher.java
...
*.class
文件在技术上可以导入(尽管其中一些类可能是私有的或受包保护的;只能使用公共类)。