【问题标题】:How do I reference and export another project when developing a J2EE web app?开发 J2EE Web 应用程序时如何引用和导出另一个项目?
【发布时间】:2011-01-18 21:07:51
【问题描述】:

我有几个使用 servlet 的 J2EE 项目,每个项目都从一个基类扩展而来,该基类处理主要的 doGet 和 doPost 方法,并在子类上调用更具体的方法。我不想将该基类作为每个 WAR 文件中的类,而是将其移动到其他每个项目都可以引用的自己的 JAR 中。

我正在使用 Eclipse。所以,我创建了一个新的 Java 项目,并将基类移到那里。它抱怨没有引用 servlet-api.jar,所以我在那里添加了它。然后其他项目抱怨没有对那个新项目的引用,所以这些引用被添加了。

现在,没有更多抱怨了,但是当我运行项目时(通过打开 servlet 类并选择 Run As),它不会从其他项目中导出类,并且 Tomcat 会抛出一个尝试实例化未知类的子类时出现异常。

我如何告诉 eclipse 导出 servlet 项目本身和它所引用的其他 java 项目?

【问题讨论】:

    标签: eclipse servlets jakarta-ee jar


    【解决方案1】:

    我正在使用 Eclipse。所以,我创建了一个新的 Java 项目,并将基类移到那里。它抱怨没有对 servlet-api.jar 的引用,所以我在那里添加了它。

    确保您是通过 Java Build Path > Libraries > Add Library > Server Runtimes > 添加它的em>[选择有问题的服务器](因此不能复制导入,否则类路径可能与实际使用的服务器冲突)。

    然后其他项目抱怨没有对那个新项目的引用,所以这些引用被添加了。

    我不确定我是否了解这里的根本原因。

    现在,没有更多抱怨了,但是当我运行项目时(通过打开 servlet 类并选择 Run As),它不会从其他项目中导出类,并且 Tomcat 在尝试实例化子类时会抛出异常一个未知的类。

    您还需要配置已部署的 Web 项目以导出项目引用。转到项目属性中的 Java EE Module Dependencies 并勾选要作为依赖项导出的项目。

    【讨论】:

    • 最后一步有点麻烦。该区域中没有列出任何项目,我唯一的选择是添加库项目中不存在的 JAR 文件。
    • 您需要先通过 Java Build Path > Projects > Add 添加这些项目。 另请参阅我的答案的第二部分。
    • 我已经将该项目重新创建为动态 Web 项目,并将其作为构建路径的一部分添加到主项目中。
    • 我错了(我没有意识到你不能选择动态 Web 项目作为 Java EE 模块依赖),我更新了答案。只要有一个普通的Java项目,将Server Runtime库添加到它,然后在Web项目中将它添加到Java Build Path并在Java EE Module Dependencies中打勾。
    • @My-Name-Is:从 Eclipse 3.6(Helios,2010 年 6 月推出,比上述答案晚 4 个月)重命名为 Deployment Assembly。另见stackoverflow.com/questions/11126044/…
    【解决方案2】:

    检查运行时配置的 CLASSPATH 设置。与其依赖“运行方式...”,不如继续为您的 servlet 创建显式运行时配置。这样,您可以确保在项目中包含所有依赖类,而不是正在运行的项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2013-08-09
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多