Java 类/接口来封装文件系统中的OSGi包

Java 类/接口来封装文件系统中的OSGi包,java,osgi,Java,Osgi,OSGi框架api中是否有封装未安装在容器中的捆绑包的内容?基本上,它会获取一个文件并为文件系统中的一个包生成一个对象,该对象包含getSymbolicName()、getExportedPackages()、getBundleVersion()等 我明白了,但医生在第一句话中说: 框架中已安装的捆绑包 所以这个接口有一些方法对于未安装的bundle没有意义,只是放在文件系统中,这正是我所需要的。例如,它有一个start()方法,在容器之外没有意义。与getBundleId()相同 我需要一个,

OSGi框架api中是否有封装未安装在容器中的捆绑包的内容?基本上,它会获取一个文件并为文件系统中的一个包生成一个对象,该对象包含getSymbolicName()、getExportedPackages()、getBundleVersion()等

我明白了,但医生在第一句话中说:

框架中已安装的捆绑包

所以这个接口有一些方法对于未安装的bundle没有意义,只是放在文件系统中,这正是我所需要的。例如,它有一个
start()
方法,在容器之外没有意义。与
getBundleId()相同


我需要一个,我想知道在我创建自己的

捆绑包之前是否有一个标准捆绑包,正如您所说的。它可以在OSGi容器中用于容器处理的捆绑包。然而,如果你需要你提到的信息,用一个小功能就很容易得到

  • 创建新文件(文件名)
  • 阅读舱单
  • 从清单中读取值,并使用org.osgi.framework.Constants接口作为Manifest.getmaintattributes().get(key)函数的参数
您可以在checkBundle()函数中找到一个示例(来自第91行)

编辑

如果包来自其他人而不是文件系统,则可以使用JarInputStream


您可以尝试将(或equinox或Knopflerfish等价物)放到一个独立的项目中,并与社区共享;-)

正如您所说,Bundle是指已安装的Bundle。它可以在OSGi容器中用于容器处理的捆绑包。然而,如果你需要你提到的信息,用一个小功能就很容易得到

  • 创建新文件(文件名)
  • 阅读舱单
  • 从清单中读取值,并使用org.osgi.framework.Constants接口作为Manifest.getmaintattributes().get(key)函数的参数
您可以在checkBundle()函数中找到一个示例(来自第91行)

编辑

如果包来自其他人而不是文件系统,则可以使用JarInputStream


您可以尝试将(或equinox或Knopflerfish等价物)放到一个独立的项目中,并与社区共享;-)

谢谢你,巴拉兹。我知道如何提取所有这些,除了我不知道的常量接口,现在我将使用它。谢谢你。但我的问题的答案是,没有一个,同意吗?只是如果我创建自己的封装,我可能会丢失一些我不使用的东西,比如getFragmentsHost。所以我想知道标准中是否已经有一个功能完整的api。除了清单条目中的字符串之外,还有更多面向对象的东西,例如带有getVersion()、getUses()等的ExportedPackage类,而不是我在API中解析stringNo解析器。API更多的是关于接口和常量,而不是带有实现的类。正如我记得的那样,我检查了equinox和felix是如何解析MANIFEST.MF的,它们都有自己的简单解决方案。那是几年前的事了,所以我不记得那些类名了,但也不难找到。当felix或equinox位于类路径上时,只需在eclipse中的任何常量值上按下“ctrl+alt+h”。使用例如Fragment Host常量的地方不多。请记住,文件系统中根本不一定存在捆绑包。它们是从可以来自任何地方的InputStream加载的。在这种情况下,JarInputStream而不是JarFile可以帮助获取清单数据。我认为Hilikus也在寻找解析导入包、导出包和其他复杂属性值的通用解决方案。类似于但在独立项目中。嗯,我不知道是否存在这样一个项目。当用作库时,它包含许多用于解析清单条目的实用程序。谢谢你。我知道如何提取所有这些,除了我不知道的常量接口,现在我将使用它。谢谢你。但我的问题的答案是,没有一个,同意吗?只是如果我创建自己的封装,我可能会丢失一些我不使用的东西,比如getFragmentsHost。所以我想知道标准中是否已经有一个功能完整的api。除了清单条目中的字符串之外,还有更多面向对象的东西,例如带有getVersion()、getUses()等的ExportedPackage类,而不是我在API中解析stringNo解析器。API更多的是关于接口和常量,而不是带有实现的类。正如我记得的那样,我检查了equinox和felix是如何解析MANIFEST.MF的,它们都有自己的简单解决方案。那是几年前的事了,所以我不记得那些类名了,但也不难找到。当felix或equinox位于类路径上时,只需在eclipse中的任何常量值上按下“ctrl+alt+h”。使用例如Fragment Host常量的地方不多。请记住,文件系统中根本不一定存在捆绑包。它们是从可以来自任何地方的InputStream加载的。在这种情况下,JarInputStream而不是JarFile可以帮助获取清单数据。我认为Hilikus也在寻找解析导入包、导出包和其他复杂属性值的通用解决方案。类似于但在独立项目中。嗯,我不知道是否存在这样一个项目。当用作库时,包括许多用于解析清单条目的实用程序。