首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >播放框架:包javax.inject不存在

播放框架:包javax.inject不存在
EN

Stack Overflow用户
提问于 2015-04-28 07:02:12
回答 1查看 5.2K关注 0票数 2

在我的Play 2.0 Framework项目中,以下行在Eclipse和sbt编译步骤中都会产生错误:

代码语言:javascript
复制
import javax.inject.*;

我已经将javax.inject依赖项添加到build.sbt文件中:

代码语言:javascript
复制
libraryDependencies ++= Seq(
    javaCore,
    javaJdbc,
    javaEbean,
    javaWs,
    javaFooBar,
    cache,
    "javax.inject" % "javax.inject" % "1",
    "org.atmosphere" % "atmosphere-play" % "2.1.1"
)

执行cleanupdateeclipse with-source=true,就像mad一样:

代码语言:javascript
复制
[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正确地构建Play 2.0Java项目?

非常感谢!

编辑:

以下面的方式扩展项目/plugins.sbt中的存储库列表就可以了:

代码语言:javascript
复制
// The repositories
resolvers ++= Seq(
    Resolver.sonatypeRepo("snapshots"),
    Resolver.sonatypeRepo("releases"), 
    Resolver.typesafeRepo("snapshots"), 
    Resolver.typesafeRepo("releases")
)

正如Donovan所描述的那样,dependencies命令对于检查依赖项是否可以被解析非常有用!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-29 07:29:43

这看起来像是在激活器中重新加载项目定义失败了。

如果我用下面的内容更新我的build.sbt,项目仍然会正确编译而不是,因为依赖关系没有问题,而是因为它不知道更改。

代码语言:javascript
复制
libraryDependencies ++= Seq(
  javaJdbc,
  javaEbean,
  cache,
  javaWs,
  "foo" % "bar" % "1.0"
)

编译消息:

代码语言:javascript
复制
[exampleApp] $ compile
[success] Total time: 0 s, completed 29-apr-2015 9:13:30

如果我现在reload我的项目配置,我们将开始看到问题。

代码语言:javascript
复制
[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

如果您添加了一个需要特殊解析器(例如快照等)的依赖项,这正是您所看到的。

让我们从build.sbt和reload中删除该行,以便正确编译,然后为项目中不存在的包添加一个导入。

build.sbt (后面是重新加载)

代码语言:javascript
复制
libraryDependencies ++= Seq(
  javaJdbc,
  javaEbean,
  cache,
  javaWs
)

Application.java

代码语言:javascript
复制
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."));
    }
}

编译此结果的

代码语言:javascript
复制
[error] D:\tmp\exampleApp\app\controllers\Application.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,可以帮助您找到正确的位置。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29912479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档