gpt4 book ai didi

java - 运行 OSGi 包中包含的 jar

转载 作者:行者123 更新时间:2023-12-02 06:11:29 25 4
gpt4 key购买 nike

情况是我需要将可运行的 jar X.jar 打包到 OSGi 包中。 jar 本身不能修改,并且 OSGi 是强制性的,因为 X.jar 将通过需要 OSGi bundle 的软件程序进行分发和运行。 X.jar 中包含的应用程序用于通过网络与另一个应用程序进行通信。

我的计划是使用 eclipse 创建一个 OSGi bundle ,然后在其中包含 X.jar。但问题是没有检测到X.jar。如果我尝试访问我的文件系统上的 X.jar 副本,它就可以工作。我的捆绑文件结构:

 -\MyBundle
-\META-INF
-\MANIFEST.MF
-\src
-\mybundle
-\Activator.class
-\X.jar

激活剂:

 public void start(BundleContext context)  {
Thread XThread = new Thread(){
public void run(){
try {
Runtime.getRuntime().exec("java -jar X.jar");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
}

list .MF

 Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Bundle
Bundle-SymbolicName: myBundle
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.ericsson.mas.Activator
Bundle-ClassPath: .,X.jar
Bundle-Vendor: BundleVendor
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: org.osgi.framework;version="1.3.0"

我怀疑我的 Bundle-ClassPath 有问题,但当我四处搜索时似乎是正确的。非常感谢任何帮助。

注意:我知道这完全违背了 OSGi 的理念。

最佳答案

如果您想将其作为外部 java 进程运行,则需要从包中提取 jar 并指向提取的 jar。您的bundle data file存储是提取 bundle 的好地方。仅当您想直接在激活器中加载类时,将 jar 放在类路径上才有帮助。

关于java - 运行 OSGi 包中包含的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21838872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com