如何解决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?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。