2
我们通过执行java -ea xxx
来启用核心Java应用程序中的断言,我也知道如何通过更改命令行选项来启用eclipse中的断言。如何在CQ5/OSGi Bundle(Java)中启用断言?
但是如何在OSGi包中启用断言。我有一个捆绑包,我想测试启用断言,我想在部署时禁用它们(由于缺省情况下禁用了断言,因此禁用会很容易)。但如何启用它?
我们通过执行java -ea xxx
来启用核心Java应用程序中的断言,我也知道如何通过更改命令行选项来启用eclipse中的断言。如何在CQ5/OSGi Bundle(Java)中启用断言?
但是如何在OSGi包中启用断言。我有一个捆绑包,我想测试启用断言,我想在部署时禁用它们(由于缺省情况下禁用了断言,因此禁用会很容易)。但如何启用它?
您可以使用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>
...
嗯,我使用的Eclipse CRXDE,所以我不需要注册激活器。我的Activator将始终处于活动状态。我会试试这个,让你知道。 – Oliver 2014-10-09 12:32:52