osgi:导入部分存在于捆绑包中的包
我有一个包X.Y.Z,存在于两个包a和B中:osgi:导入部分存在于捆绑包中的包,osgi,glassfish-3,apache-felix,Osgi,Glassfish 3,Apache Felix,我有一个包X.Y.Z,存在于两个包a和B中: bundle A package X.Y.Z class Class1 bundle B package X.Y.Z class Class2 B包出口包装X.Y.Z。 Bundle A导入包X.Y.Z,并得到一个异常,即找不到自己的类Class1。它应该起作用吗 我将glassfish 3.1与felix一起使用不,它不应该工作。如果导入包X.Y.Z,则该导入将优先于包自身的内部内容 更一般地说,您有一个称为拆分包的问题。包应该
bundle A
package X.Y.Z
class Class1
bundle B
package X.Y.Z
class Class2
B包出口包装X.Y.Z。
Bundle A导入包X.Y.Z,并得到一个异常,即找不到自己的类Class1。它应该起作用吗
我将glassfish 3.1与felix一起使用不,它不应该工作。如果导入包X.Y.Z,则该导入将优先于包自身的内部内容
更一般地说,您有一个称为拆分包的问题。包应该是一致的,并通过单个包导出,而不是跨多个包进行涂抹。您应该重构包内容,以便属于包X.Y.Z的所有类都存在于单个包中。不,它不应该工作。如果导入包X.Y.Z,则该导入将优先于包自身的内部内容
更一般地说,您有一个称为拆分包的问题。包应该是一致的,并通过单个包导出,而不是跨多个包进行涂抹。您应该重构包内容,以便属于包X.Y.Z的所有类都存在于单个包中。再次强调,Niel是绝对正确的。但是,有时,无论出于何种原因,供应商都会有多个包含相同包的.jar文件。有时,当他们想为其产品的谨慎实现提供小的.jar文件时,可以这样做。可以这样做的一个例子是,他们对EDI文档的文本处理算法与xml文档的文本处理算法不同。在本例中,他们可能会选择创建两个.jar(版本1和2)文件,其中包含“badlyPlannedImplementation.util”,其中包含不同的实现类。就我个人而言,我只遇到过几次这种情况,但问题是你如何处理 当您遇到两个.jar文件导出同一个包并且希望访问这两个包类的问题时,您将使用一种称为“着色”的机制。着色是指当您获取这两个包并将它们的内容收集到另一个.jar文件包中时。这过去是由一个名为“maven shade plugin”的maven插件完成的,但现在该功能是maven bundle插件的一部分 首先,创建一个新项目,我们将我们的项目称为“badlyPlannedImplementationShaded”。然后,在项目中创建一个pom.xml文件。在“依赖项”部分中,包括要一起着色的两个.jar文件的依赖项 然后,将以下内容添加到构建部分
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactid>
<version>2.1.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Version>${project.version}</Bundle-Version>
<Export-Package>
badlyPlannedImplementation.util;version="1",
badlyPlannedImplementation.util;version="2"
</Export-Package>
</instructions>
</configuration>
</plugin>
org.apache.felix
maven捆绑插件
2.1.0
真的
${project.version}
badlyPlannedImplementation.util;version=“1”,
badlyPlannedImplementation.util;version=“2”
这样做将创建一个新的包,其中包含一个util包,该包包含您试图使用的两个.jar文件中的所有类
我希望这有帮助 再说一遍,尼尔是绝对正确的。但是,有时,无论出于何种原因,供应商都会有多个包含相同包的.jar文件。有时,当他们想为其产品的谨慎实现提供小的.jar文件时,可以这样做。可以这样做的一个例子是,他们对EDI文档的文本处理算法与xml文档的文本处理算法不同。在本例中,他们可能会选择创建两个.jar(版本1和2)文件,其中包含“badlyPlannedImplementation.util”,其中包含不同的实现类。就我个人而言,我只遇到过几次这种情况,但问题是你如何处理 当您遇到两个.jar文件导出同一个包并且希望访问这两个包类的问题时,您将使用一种称为“着色”的机制。着色是指当您获取这两个包并将它们的内容收集到另一个.jar文件包中时。这过去是由一个名为“maven shade plugin”的maven插件完成的,但现在该功能是maven bundle插件的一部分 首先,创建一个新项目,我们将我们的项目称为“badlyPlannedImplementationShaded”。然后,在项目中创建一个pom.xml文件。在“依赖项”部分中,包括要一起着色的两个.jar文件的依赖项 然后,将以下内容添加到构建部分
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactid>
<version>2.1.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Version>${project.version}</Bundle-Version>
<Export-Package>
badlyPlannedImplementation.util;version="1",
badlyPlannedImplementation.util;version="2"
</Export-Package>
</instructions>
</configuration>
</plugin>
org.apache.felix
maven捆绑插件
2.1.0
真的
${project.version}
badlyPlannedImplementation.util;version=“1”,
badlyPlannedImplementation.util;version=“2”
这样做将创建一个新的包,其中包含一个util包,该包包含您试图使用的两个.jar文件中的所有类
我希望这有帮助 捆绑A导出和导入哪些包,捆绑B导出和导入哪些包?捆绑A导出和导入哪些包,捆绑B导出和导入哪些包?