因此,在使用最新版本的Eclipse 2020-03进行调试时,我会遇到问题,该版本是我为正在处理的新项目安装的。 首先让我吃惊的是,当我无法使用Class.getResource(String name)读取资源时,事情无法正常进行,因为getResource(..)断点处的调试器不断告诉我该名称为null,而我肯定提供了路径名。
清除,清理,重新加载目标(运行平台),刷新和重建没有任何改变,所以我决定创建一个仅包含Activator的简单OSGI插件项目,以及仅包含最少捆绑软件的调试配置。 / p>
激活器如下:
public class Activator implements BundleActivator {
public static final String BUNDLE_ID = "test.myapp.core";
private static BundleContext context;
private Logger logger = Logger.getLogger(this.getClass().getName());
static BundleContext getContext() {
return context;
}
public Activator() {
super();
logger.info("STARTED: " + BUNDLE_ID);
}
@Override
public void start(BundleContext bundleContext) throws Exception {
logger.info("ACTIVATED: " + BUNDLE_ID);
Activator.context = bundleContext;
InputStream in = getClass().getResourceAsStream( "/test.cfg" );
}
@Override
public void stop(BundleContext bundleContext) throws Exception {
Activator.context = null;
}
}
编辑:将原始链接从build.properties更改为test.cfg,以避免混淆。
但是,当我启动调试器时,它将激活捆绑软件,但不会显示任何日志消息。同样,调试器也不会响应我输入的断点。奇怪的是,选择'ss'给我显示的包比调试配置中提供的要多得多。
id状态捆绑包
0有效org.eclipse.osgi_3.15.200.v20200214-1600
1个活动test.myapp.core_1.0.0.qualifier
2有效org.apache.lucene.core.source_8.4.1.v20200122-1459
3 ACTIVE javax.annotation.source_1.2.0.v201602091430
....
似乎启动了不同的调试配置,并且正在使用我的捆绑软件的先前构建的版本,该版本中尚未包含日志消息。清除bin文件夹,最终所有元数据也无效。
我在这里遇到的一切让我很沮丧。希望有人可以帮忙!
答案 0 :(得分:0)
好吧..看来,我发现了哪里出了问题。一次发生了两个问题:
1:关于getResource(字符串名称)的问题。 Manifest.MF中的Bundle-ClassPath设置必须包含。 (请参阅https://www.eclipse.org/forums/index.php/t/287184/),因此我的情况是:
Bundle-ClassPath: .,
test.myapp.core
Bundle-ClassPath不会由插件向导自动添加,因此可能会导致一些问题。
2:新IDE中的“调试”配置屏幕似乎非常慢,并且如果从“仅显示选定的内容”切换回原来的状态,则不会更改选定的包。结果,先前的捆绑软件列表仍然处于活动状态,而在“调试配置编辑器”中未选中它们。
我将针对这些问题提交报告
附加
因此,我对Bundle-ClassPath问题进行了进一步的研究,并且在Manifest.MF中的此条目在添加某些库时发生了可能发生的情况。再次删除它们之后,Bundle-ClassPath条目仍然存在,并引起了各种问题。如果有的话:
1:请注意,捆绑软件A中的某些类在捆绑软件B中使用时会导致NoClassDefFound异常
2:捆绑软件A中的build.properties文件发出警告,提示缺少源文件
3:其他捆绑包似乎没有这个问题
检查以查看Manifest.MF文件中是否有Bundle-ClassPath条目。最有可能是该条目引起了问题。删除清单中的条目,或添加.。最后。
请参阅:
1:What is the intended use case for Bundle-Classpath in OSGI bundles
2:https://bugs.eclipse.org/bugs/show_bug.cgi?id=139271