Java Web Project引用另一个Java项目

时间:2009-11-07 01:19:54

标签: java eclipse java-ee

我有一个Java Project,我正在使用Eclipse的Dynamic Web Project创建一个Web界面。 Web项目由一个servlet和两个JSP组成。像这样:

/JavaApplication
  /src
  /lib
  /resources
/WebApplication
  /src
    /Servlet.java
  /WebContent
    /WEB-INF
    index.jsp
    other.jsp

现在,我需要从JavaApplication引用WebApplication,以便使用其类处理Web请求。实现这一目标的最佳方法是什么?我的想法是创建.jar JavaApplication,其中包含所有.class个文件,/resources/libs。通过这种方式,我可以在Web应用程序中包含.jar,我可以拥有一个包含整个应用程序的.war文件。

你怎么看?这个问题通常是如何解决的?

注意:我不想将Java项目转换为Web项目。

5 个答案:

答案 0 :(得分:16)

在Eclipse项目属性中,将项目添加到 Java EE模块依赖项(Eclipse 3.5或更早版本)

Java EE Module Dependencies

项目属性中的

部署程序集(Eclipse 3.6或更新版本)条目。

Deployment Assembly

这样Eclipse就会注意做正确的事情来创建一个WAR(它将以/WEB-INF/lib结尾)。不需要其他配置,即使不是在构建路径中摆弄一些。

答案 1 :(得分:15)

在Eclipse下,您可以为给定项目声明项目引用,即您的案例中的Web应用程序。为此,请右键单击您的Web应用程序项目,然后转到属性>项目参考并选择JavaApplication项目。这应该允许您从JavaApplication调用WebApplication项目中的代码,而无需构建WAR。这是开发的解决方案。

对于标准部署(在IDE之外),您确实应该创建标准WAR。为此,您必须将JavaApplication打包为JAR,包括.class文件和/resources下的文件,但依赖于它的库(/lib下的JAR)。这些依赖项实际上最终会在WAR的WEB-INF/lib目录中,而不是JavaApplication的JAR。这些步骤通常使用AntMaven等工具自动执行。

答案 2 :(得分:3)

将Java应用程序连接到Web应用程序以进行开发:

右键点击网络项目:

  

属性>项目参考>添加要引用的java项目

现在,在web项目的属性选项卡中,转到

  

属性>部署程序集>手动添加项目并运行应用程序

答案 3 :(得分:2)

如果您的网络容器支持,请考虑升级到EAR级别。

共享代码的棘手部分是应该放置公共代码的位置。复制pr Web应用程序? Web容器中的副本?过度使用“共享这些类”可能会导致类加载器问题。

如果要创建两个单独的 Web应用程序,请将常用Java代码重构为单独的Eclipse项目,并从两个WAR项目中引用它。


编辑:显然我误解了问题描述,并且认为您询问了现有的和新的Web应用程序共享代码。

如果你的应用程序有一个Eclipse项目,而你的web前端有另一个项目,那么你可以让你的应用程序导出必要的资源,Eclipse Java EE中的“Export WAR”可以将其包装在一个jar文件中并放入WEB-INF / lib给你。您需要在Properties - >中使用复选标记明确说明。 Java EE模块Web项目的依赖关系。期待你必须尝试一下 - 这花了我一些时间来学习。

答案 4 :(得分:0)

通常,您将使用Java应用程序中的远程服务bean创建一个API接口,该接口公开您要在Web应用程序中调用的方法。您将在Web应用程序中包含API接口的代理,该Web应用程序在Java应用程序中调用远程服务bean。请记住,您需要在web.xml文件中注册远程bean。