我们通过执行java -ea xxx
在核心java应用程序中启用断言,我也知道如何通过更改命令行选项在eclipse中启用断言。
但是如何在 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>
...
关于java - 如何在 CQ5/OSGi Bundle (Java) 中启用断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26270764/