【问题标题】:How to enable assert in CQ5/ OSGi Bundle (Java)?如何在 CQ5/OSGi Bundle (Java) 中启用断言?
【发布时间】:2014-10-09 05:10:05
【问题描述】:

我们通过 java -ea xxx 在核心 java 应用程序中启用断言,我也知道如何通过更改命令行选项在 eclipse 中启用断言。

但是如何在 OSGi 包中启用断言。我有一个捆绑包,我想在启用断言的情况下进行测试,并且我想在部署时禁用它们(禁用很容易,因为默认情况下禁用了断言)。但是如何启用呢?

【问题讨论】:

    标签: java osgi aem assert osgi-bundle


    【解决方案1】:

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

    【讨论】:

    • 嗯,我使用 CRXDE Eclipse,所以我不需要注册激活器。我的激活器将始终处于活动状态。我会试试这个并告诉你。
    猜你喜欢
    • 1970-01-01
    • 2016-02-03
    • 2011-10-30
    • 2011-07-07
    • 1970-01-01
    • 2013-01-16
    • 2023-03-19
    • 1970-01-01
    • 2013-08-18
    相关资源
    最近更新 更多