【发布时间】:2014-10-09 05:10:05
【问题描述】:
我们通过 java -ea xxx 在核心 java 应用程序中启用断言,我也知道如何通过更改命令行选项在 eclipse 中启用断言。
但是如何在 OSGi 包中启用断言。我有一个捆绑包,我想在启用断言的情况下进行测试,并且我想在部署时禁用它们(禁用很容易,因为默认情况下禁用了断言)。但是如何启用呢?
【问题讨论】:
标签: java osgi aem assert osgi-bundle
我们通过 java -ea xxx 在核心 java 应用程序中启用断言,我也知道如何通过更改命令行选项在 eclipse 中启用断言。
但是如何在 OSGi 包中启用断言。我有一个捆绑包,我想在启用断言的情况下进行测试,并且我想在部署时禁用它们(禁用很容易,因为默认情况下禁用了断言)。但是如何启用呢?
【问题讨论】:
标签: java osgi aem assert osgi-bundle
您可以使用ClassLoader#setDefaultAssertionStatus(Boolean) 方法。它仅为尚未加载的类设置断言状态。因此,放置此语句的最佳位置是捆绑激活器:
public class Activator implements BundleActivator {
@Override
public void start(BundleContext bundleContext) throws Exception {
getClass().getClassLoader().setDefaultAssertionStatus(true);
}
@Override
public void stop(BundleContext context) throws Exception {
}
}
记得在maven-bundle-plugin配置中注册激活器:
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Bundle-Activator>my.project.Activator</Bundle-Activator>
...
【讨论】: