【问题标题】:"package javax.inject does not exist" error while compiling with javac in commandline在命令行中使用 javac 编译时出现“包 javax.inject 不存在”错误
【发布时间】:2012-09-06 23:55:16
【问题描述】:

我正在迈出学习 JSF 的第一步。我发现了这本有趣的书,名为“Core JavaServer Faces 第三版”。

尝试编译第一个示例,您可以从:http://horstmann.com/corejsf/ 下载源代码。当我在命令行上键入以下内容时

javac UserBean.java

我收到错误:

package javax.inject does not exist
package javax.enterprise.context doe not exist

我已经下载了 Java EE、Ant 和 GlassFish。

这是我的命令行快照:

C:\JSF-Tutorial\corejsf3-examples\javaee\ch01\login\src\java\com\corejsf>javac UserBean.java
UserBean.java:4: error: package javax.inject does not exist
import javax.inject.Named;
                   ^
UserBean.java:6: error: package javax.enterprise.context does not exist
import javax.enterprise.context.SessionScoped;
                               ^
UserBean.java:9: error: cannot find symbol
@Named("user") // or @ManagedBean(name="user")
 ^
  symbol: class Named
UserBean.java:10: error: cannot find symbol
@SessionScoped
 ^
  symbol: class SessionScoped
4 errors

C:\JSF-Tutorial\corejsf3-examples\javaee\ch01\login\src\java\com\corejsf>

上周一直在谷歌上搜索如何编译 Java EE 应用程序,但没有任何用处。

有人能帮我解决这个问题吗,我需要解决这个问题,这样我才能继续学习 JSF。

S.P: 在开始使用 NetBeans 编译我的 Java EE 项目之前,我想学习徒手编译 Java EE 应用程序。 我更喜欢先学习使用 GlassFish,然后可能会考虑使用 Tomcat。

还有一个问题;使用 Java EE 和 GlassFish 服务器部署我的应用程序有什么区别?

【问题讨论】:

  • 确保您使用的是 JSF 2.x 和 GlassFish 3.x 或其他 Java EE 6 Web Application Server,并且您的项目正在引用您的 GlassFish 库。

标签: java jakarta-ee glassfish javac


【解决方案1】:

您需要在编译时类路径中包含包含这些类的 JAR 文件。

在您使用 GlassFish 服务器的特定情况下,它是 /glassfish/lib/javaee.jar。您可以将类路径指定为javac 命令的-cp(或-classpath)参数。它是一个以分号分隔的磁盘文件系统路径字符串,指向 JAR 文件和/或类文件夹,应包含在编译时类路径中。

javac -cp /path/to/glassfish/lib/javaee.jar UserBean.java

javac 会在遇到 import 引用的未知类时查看那里,以便它可以验证您是否以正确的方式使用它。

这在技术上与 Java EE 无关。这只是基本的Java。我建议在深入研究 Java EE 之前先了解这一点。

如果您使用的是 IDE,那么只需将目标服务器作为“目标运行时”附加到项目中即可。然后,IDE 将自动对构建路径(编译时类路径)执行所有魔法。

【讨论】:

    【解决方案2】:

    在 netbeans 7.3 中,您可以在项目查看器中右键单击库文件夹,选择“添加库”选项,然后从列表中选择“Java EE 6 API 库”。

    【讨论】:

    • 如果我不使用 Netbeans 7.3.. 怎么办?
    • @NREZ 我确信 Eclipse 具有类似的功能。这只是添加 JAR 的一种简单方法。
    【解决方案3】:

    在 NetBeans IDE 8.0 中,它与上述 7.3 版略有不同

    1. 在您的项目的 Java EE 中右键单击 Libraries
    2. 选择Import...
    3. 根据您使用的版本选择Java EE 6 API LibraryJava EE 7 API Library
    4. 点击Import Library按钮
    5. 选择您刚刚导入的库,然后按Add Library 按钮。

    【讨论】:

    • 在 NetBeans IDE 8.0 上运行良好 :)
    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    相关资源
    最近更新 更多