Java 在karaf中部署第三方jar文件时出错
我试图在ApacheKaraf3.0.3中部署一个包,其中包含一定数量的第三方jar文件,我将其嵌入其中, 因为第三方jar文件是非OSGi包。其中一个jar文件包含一个不存在的java文件中的导入语句 在最新版本的jar文件中(我没有旧版本的jar文件) e、 g:jar文件1 -第一类 -导入com.java.test.io 在部署带有jar文件的应用程序包时,我遇到了一个错误 执行命令时出错:在捆绑包上执行命令时出错: 无法对捆绑包391执行命令:无法解析捆绑包“com.test.example.bundle_0.1.0.SNAPSHOT[391]”。 原因:缺少约束:导入包:com.java.test.io;version=“0.0.0” 我正在尝试用简单的java应用程序复制这个场景,它按预期工作。 我的假设是karaf将扫描所有导入语句,并检查是否有正确的导出包(包级权限) 存在相应的导入状态。 有人能解释一下为什么java应用程序会运行,而且会失败吗 pom.xmlJava 在karaf中部署第三方jar文件时出错,java,eclipse,maven,jar,apache-karaf,Java,Eclipse,Maven,Jar,Apache Karaf,我试图在ApacheKaraf3.0.3中部署一个包,其中包含一定数量的第三方jar文件,我将其嵌入其中, 因为第三方jar文件是非OSGi包。其中一个jar文件包含一个不存在的java文件中的导入语句 在最新版本的jar文件中(我没有旧版本的jar文件) e、 g:jar文件1 -第一类 -导入com.java.test.io 在部署带有jar文件的应用程序包时,我遇到了一个错误 执行命令时出错:在捆绑包上执行命令时出错: 无法对捆绑包391执行命令:无法解析捆绑包“com.test.exam
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>mybundlename</Bundle-SymbolicName>
<Embed-Dependency>jar1,jar2,jar3,jar4</Embed-Dependency>
</instructions>
</configuration>
</plugin>
</plugins>
org.apache.felix
maven捆绑插件
真的
mybundlename
罐1,罐2,罐3,罐4
重要的不是类中的包导入,而是捆绑包清单中的包导入
如果您的代码在OSGi容器之外工作,那么这意味着在特定的使用场景中,在运行时不需要导入的包。或者根本不需要,应该清理干净
您必须部署一个bundle来满足导入,或者在构建bundle时必须禁止添加导入com.java.test.io
。使用maven bundle插件,您可以这样实现:
<instructions>
<Embed-Dependency>...</Embed-Dependency>
<Import-Package>
!com.java.test.io.*,
*
</Import-Package>
</instructions>
...
!com.java.test.io.*,
*
您如何使用嵌入的jar文件构建包?@谢谢Ralf。com.java.test.io包驻留在第三方jar文件中。是否可以从嵌入的依赖项jar文件中排除该包。另外,对于非osgi jar文件,没有任何限制(通过在karaf中部署jar进行测试),因此它希望捆绑包处于place@Shriram,是的,例如,如果您使用mave bundle插件,您可以轻松地排除添加到清单导入部分的包。您如何使用嵌入的第三方JAR构建捆绑包?