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