在我的play 2.0 framework java项目中,以下行在eclipse和sbt编译步骤中都会产生错误:
import javax.inject.*;
我已经添加了 javax.inject
依赖于my build.sbt文件:
libraryDependencies ++= Seq(
javaCore,
javaJdbc,
javaEbean,
javaWs,
javaFooBar,
cache,
"javax.inject" % "javax.inject" % "1",
"org.atmosphere" % "atmosphere-play" % "2.1.1"
)
并被处决 clean
, update
& eclipse with-source=true
像疯了一样:
[myproject] $ eclipse with-source=true
[info] About to create Eclipse project files for your project(s).
[info] Compiling 3 Scala sources and 12 Java sources to ./myproject/target/scala-2.11/classes...
[error] ./myproject/app/com/elements/legacy/LegacyController.java:3: object inject is not a member of package javax
[error] import javax.inject.*;
[error] ^
[error] one error found
[error] (compile:compile) Compilation failed
[info] Resolving jline#jline;2.11 ...
[error] Could not create Eclipse project files:
[error] Error evaluating task 'dependencyClasspath': error
我觉得sbt不会在依赖关系无法解决的情况下抛出错误(例如上面的javafoobar)。如何激活?
如何使用javax.inject正确构建Play2.0Java项目?
谢谢!
编辑:
通过以下方式扩展project/plugins.sbt中的存储库列表达到了目的:
// The repositories
resolvers ++= Seq(
Resolver.sonatypeRepo("snapshots"),
Resolver.sonatypeRepo("releases"),
Resolver.typesafeRepo("snapshots"),
Resolver.typesafeRepo("releases")
)
这个 dependencies
donovan所描述的命令对于检查依赖项是否可以被解析非常有帮助!
1条答案
按热度按时间kh212irz1#
这看起来像是在activator中重新加载项目定义失败。
如果用以下内容更新build.sbt,项目仍然可以正确编译不是因为依赖关系没有问题,而是因为它不知道更改。
编译消息:
如果我现在
reload
我的项目配置,我们将开始看到问题。如果您添加了一个需要特殊解析程序(例如快照等)的依赖项,您就会看到这一点。
让我们从build.sbt中删除该行,然后
reload
所以我们可以正确编译,然后为项目中不存在的包添加导入。build.sbt(后面是重新加载)
应用程序.java
在中编译此结果
这两个错误有非常明显的特征,这与
dependencies
如上所述,应该有助于引导你到正确的地方。