Netbeans:奇怪的焊接行为

| 根据官方文档,我实现了一个非常简单的Java SE Weld quickstart类。
@Singleton
public class TesteCDI {

    public void printHello(@Observes ContainerInitialized event, 
         @Parameters List<String> parameters) {
       System.out.println(\"Hello Weld!\" + parameters);
   }
} 
我的跑步配置触发
org.jboss.weld.environment.se.StartMain
这是有趣的部分。 如果我没有创建Jar文件(单击\“ Clean and Build \”),则不会打印我的消息。
54 [main] INFO org.jboss.weld.Version - WELD-000900 1.1.0 (Final)
110 [main] INFO org.jboss.weld.Bootstrap - WELD-000101 Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously.
388 [main] WARN org.jboss.interceptor.util.InterceptionTypeRegistry - Class \'javax.ejb.PostActivate\' not found, interception based on it is not enabled
388 [main] WARN org.jboss.interceptor.util.InterceptionTypeRegistry - Class \'javax.ejb.PrePassivate\' not found, interception based on it is not enabled
如果我确实创建了Jar文件,那么无论是从命令行还是从Netbeans,一切都可以正常运行。因此,我假设Netbeans正在从jar运行应用程序。 问题是……不是。 如果我更新Test类并从Netbeans运行,它将选择所做的更改。如果我从命令行运行jar,它只会打印旧消息。 如果我清理项目,则Netbeans启动配置将停止打印消息。 谁能解释Netbeans如何精确地运行我的应用程序?这种奇怪的行为有意义吗?还是应该将其视为错误?     
已邀请:
        我认为,如果您忘记了META-INF / beans.xml,weld不会拿起带注释的组件,您是否检查了类路径中是否有META-INF / beans.xml?     

要回复问题请先登录注册