2014-10-09 63 views
2

我們通過執行java -ea xxx來啓用核心Java應用程序中的斷言,我也知道如何通過更改命令行選項來啓用eclipse中的斷言。如何在CQ5/OSGi Bundle(Java)中啓用斷言?

但是如何在OSGi包中啓用斷言。我有一個捆綁包,我想測試啓用斷言,我想在部署時禁用它們(由於缺省情況下禁用了斷言,因此禁用會很容易)。但如何啓用它?

回答

2

您可以使用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> 
... 
+0

嗯,我使用的Eclipse CRXDE,所以我不需要註冊激活器。我的Activator將始終處於活動狀態。我會試試這個,讓你知道。 – Oliver 2014-10-09 12:32:52