Play framework: package javax.inject does not exist(播放框架:包 javax.inject 不存在)
问题描述
在我的 Play 2.0 Framework Java 项目中,以下行在 Eclipse 和 sbt 编译步骤中都会产生错误:
In my Play 2.0 Framework Java project, the following line yields errors both in Eclipse and during the sbt compile step:
import javax.inject.*;
我已经将 javax.inject
依赖项添加到我的 build.sbt 文件中:
I already added the javax.inject
dependency to my build.sbt file:
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
疯了:
and executed clean
, update
& eclipse with-source=true
like mad:
[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).这个怎么激活?
I have the feeling that sbt does not throw errors in case a dependency could not be resolved (e.g. javaFooBar above). How can this be activated?
如何使用 javax.inject 正确构建 Play 2.0 Java 项目?
How can I properly build a Play 2.0 Java project using javax.inject?
非常感谢!
通过以下方式扩展 project/plugins.sbt 中的存储库列表就可以了:
Extending the repository list in project/plugins.sbt in the following way did the trick:
// The repositories
resolvers ++= Seq(
Resolver.sonatypeRepo("snapshots"),
Resolver.sonatypeRepo("releases"),
Resolver.typesafeRepo("snapshots"),
Resolver.typesafeRepo("releases")
)
Donovan 描述的 dependencies
命令对于检查依赖项是否可以解决非常有帮助!
The dependencies
command as described by Donovan is very helpful to check whether a dependency could be resolved or not!
推荐答案
这看起来像是在激活器中重新加载项目定义失败.
This looks like a failure to reload the project definition within activator.
如果我用以下内容更新我的 build.sbt,项目仍然会正确编译不,因为依赖项没有问题,但因为它不知道更改.
If I update my build.sbt with the following, the project will still compile correctly not because there are no problems with the dependency but because it doesn't know about the changes.
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache,
javaWs,
"foo" % "bar" % "1.0"
)
编译消息:
[exampleApp] $ compile
[success] Total time: 0 s, completed 29-apr-2015 9:13:30
如果我现在重新加载
我的项目配置,我们就会开始看到问题.
If I now reload
my project configuration, we'll start to see problems.
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: foo#bar;1.0: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[trace] Stack trace suppressed: run last *:update for the full output.
[error] (*:update) sbt.ResolveException: unresolved dependency: foo#bar;1.0: not found
这正是您添加需要特殊解析器的依赖项时所看到的,例如快照等.
This is exactly what you would see if you added a dependency that requires a special resolver, e.g. snapshots, etc.
让我们从 build.sbt 和 reload
中删除该行,以便我们可以正确编译,然后为项目中不存在的包添加导入.
Let's remove that line from build.sbt and reload
so we can compile correctly, and then add an import for a package that doesn't exist within the project.
build.sbt(然后重新加载)
build.sbt (followed by a reload)
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache,
javaWs
)
Application.java
Application.java
import play.*;
import play.mvc.*;
import views.html.*;
import foo.bar.*;
public class Application extends Controller {
public static Result index() {
return ok(index.render("Your new application is ready."));
}
}
编译这个结果
[error] D: mpexampleAppappcontrollersApplication.java:7: error: package foo.bar does not exist
[error] import foo.bar.*;
[error] ^
[error] 1 error
[error] (compile:compile) javac returned nonzero exit code
这两个错误有非常不同的特征,结合上面提到的 dependencies
应该可以帮助你找到正确的地方.
The two errors have very distinct signatures, and this combined with dependencies
as mentioned above should help guide you to the right place.
这篇关于播放框架:包 javax.inject 不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:播放框架:包 javax.inject 不存在
基础教程推荐
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01