您如何确保在Eclipse Galileo的最终EAR中打包Utility Projects库依赖项?

fre*_*all 2 eclipse ear utility

我有一个'公用事业项目'和一个包含'公用事业项目'的'EAR项目'."实用程序项目"中的所有类最终都打包为JAR并放置在导出的EAR的"lib"目录中,例如:

  EAR.ear
    META-INF
      MANIFEST.MF
    lib
      utility.jar (which expands to):
        META-INF
          MANIFEST.MF
        com
          acme
            Foo.class
            Bar.class
Run Code Online (Sandbox Code Playgroud)

但是,"Utility Project"依赖于使用"Properties> Java Build Path> Libraries"添加到构建路径的库(freemarker.jar).我想要做的就是将freemarker.jar添加到EAR中,如下所示:

  EAR.ear
    META-INF
      MANIFEST.MF
    lib
      **freemarker.jar**
      utility.jar (which expands to):
        META-INF
          MANIFEST.MF
        com
          acme
            Foo.class
            Bar.class
Run Code Online (Sandbox Code Playgroud)

通过在Eclipse中搜索,我发现了4种实现这一目标的潜在途径,但没有一种方法可行.如果有人能够切入追逐并告诉我应该做些什么,那就太好了.但为了以防万一,我会在这里迭代它们:

来自'Utility Project'属性:

  1. 如果我单击"Java Build Path> Order and Export"并选择"freemarker.jar"进行导出,则jar根本不会在EAR文件中结束.
  2. 如果我单击"Java EE Module Dependencies"并选择"freemarker.jar"库作为依赖项,它会说:

这个JAR是一个EAR项目的捆绑库,应该打包在EAR的库目录中.它与您尝试创建的清单类路径依赖项冲突.如果创建此依赖项,则JAR将打包在EAR的根目录(而不是库)中.你确定要继续吗?

来自'EAR项目'属性:

  1. 如果我单击"Java EE模块依赖项>添加JAR ..."并导航到"freemarker.jar",并使其成为依赖项,它将被添加到EAR的根目录:/freemarker.jar
  2. 如果我执行与上面相同的操作,但检查'In Lib Dir'复选框,它会被添加到lib文件夹中,但包含在另一个lib文件夹中:/ll/lib/freemarker.jar

谢谢.

fre*_*all 7

我设法解决了这个问题.在"问题"窗口中,我收到以下警告:

不会导出或发布类路径条目/utility-project/lib/freemarker.jar.可能会导致运行时ClassNotFoundExceptions.

我一时兴起尝试使用我一直使用的Ctrl-1组合键来获得源代码的快速修复解决方案.事实证明,这也为给定的错误和警告提供了快速解决方案.我选择了两个选项中的第一个:

将关联的原始类路径条目标记为发布/导出依赖项.

我的问题消失了!

奇怪的是,所有这些似乎都是为了使"freemarker.jar"lib在"Java EE模块依赖关系"属性对话框中被选中,无论如何我都是这样做的.这可能是一个Eclispe错误!