0

我正在尝试将一些罐子包装成我希望其他捆绑包能够依赖的捆绑包。使用 Spring dm Server,这曾经很简单,只需将 jar 文件添加到新的捆绑项目中,导出所有类,并确保 jar 文件位于构建和类路径上。

这是我正在尝试做的事情(以及我失败的地方)的一个简单、规范的示例:

以 Joda Time 为例,我想把它打包成一个包,这样我就可以将它作为依赖项共享。首先,我创建了一个包来保存 jar:

  1. 创建一个新的捆绑项目 Eclipse (Indigo Java EE)
  2. 在项目根目录中创建一个文件夹“lib”
  3. 将 joda-time-1.6.1.jar 添加到“lib”文件夹
  4. 将 lib/joda-time-1.6.1.jar 添加到构建路径
  5. 更新 src/META-INF/MANIFEST.MF 以导出所有类:

    清单版本:1.0
    捆绑版本:1.0.0
    捆绑包名称:joda-time
    捆绑清单版本:2
    捆绑符号名称:org.joda.time
    捆绑类路径:lib/joda-time-1.6.1.jar,
     .
    导出包:org.joda.time,
     org.joda.time.base,
     org.joda.time.chrono,
     org.joda.time.convert,
     org.joda.time.field,
     org.joda.time.format,
     org.joda.time.tz
    

现在,我们想在我们创建的一些新包中使用它:

  1. 在 Eclipse (Indigo Java EE) "MyDepTest" 中创建一个新的捆绑项目
  2. 编辑 src/META-INF/MANIFEST.MF 以导入 org.joda.time:

    清单版本:1.0
    捆绑版本:1.0.0
    捆绑包名称:MyDepTest
    捆绑清单版本:2
    捆绑符号名称:com.foo.deptest
    导入包:org.joda.time
    导入包:org.joda.time;version="[1.0.0,1.0.0]"
    
  3. 将 org.joda.time 包添加到项目引用中,以便 Eclipse 可以解决依赖关系

  4. 编写类:

    package com.foo.deptest;
    import org.joda.time.DateTime;
    public class SimpleDepTest {
        public SimpleDepTest (){
            DateTime dt = new DateTime();
        }
    }
    

现在,org.joda.time.DateTime应该解决了,但 Eclipse 用红色下划线指示以下错误org.joda

导入 org.joda 无法解析

我哪里出错了?如何将 jar 包装为捆绑包,以便可以使用其他捆绑包中的类?

4

1 回答 1

1

事实证明,将 jar 添加到类路径是不够的,我们还需要确保它是构建路径的一部分。这是在构建配置对话框中完成的:

  1. 右键单击项目导出依赖项
  2. 选择“属性”
  3. 选择“Java 构建路径”
  4. 转到“订购和导出”选项卡
  5. 确保选中 jar 旁边的复选框(这确保 jar 本身最终位于构建路径上)
于 2011-07-04T17:50:00.437 回答