使用jar解决来自包的处女座依赖关系

时间:2011-07-04 17:08:34

标签: java springsource-dm-server eclipse-virgo

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

以下是我正在尝试做的一个简单的,规范的例子(以及我失败的地方):

以Joda Time为例,我想在捆绑中这样做,所以我可以将它作为依赖项共享。首先,我创建一个包来容纳jar:

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

    Manifest-Version: 1.0
    Bundle-Version: 1.0.0
    Bundle-Name: joda-time
    Bundle-ManifestVersion: 2
    Bundle-SymbolicName: org.joda.time
    Bundle-ClassPath: lib/joda-time-1.6.1.jar,
     .
    Export-Package: 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
    
  7. 现在,我们想在我们创建的一些新捆绑包中使用它:

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

      Manifest-Version: 1.0
      Bundle-Version: 1.0.0
      Bundle-Name: MyDepTest
      Bundle-ManifestVersion: 2
      Bundle-SymbolicName: com.foo.deptest
      Import-Package: org.joda.time
      Import-Bundle: org.joda.time;version="[1.0.0,1.0.0]"
      
    3. 将org.joda.time包添加到项目引用so Eclipse can resolve the depenencies

    4. 写下课程:

      package com.foo.deptest;
      import org.joda.time.DateTime;
      public class SimpleDepTest {
          public SimpleDepTest (){
              DateTime dt = new DateTime();
          }
      }
      
    5. 现在,org.joda.time.DateTime应解决,但Eclipse在org.joda

      上用红色下划线表示以下错误
        

      无法解析导入org.joda

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

1 个答案:

答案 0 :(得分:1)

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

  1. 右键单击项目导出依赖项
  2. 选择“属性”
  3. 选择“Java Build Path”
  4. 转到“订购和导出”标签
  5. 确保选中jar旁边的复选框(这样可以确保jar本身在构建路径上结束)