Netbeans: странное поведение при сварке - PullRequest
0 голосов
/ 01 июня 2011

В соответствии с официальной документацией Я реализовал очень простой класс быстрого запуска Java SE Weld.

@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 (нажмите «Очистить и собрать»), мое сообщение не будет напечатано.

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.

Проблема в том, что ... Это не .

Если я обновлю свой тестовый класс и запустлю изNetbeans, он выбирает изменения.Если я запускаю флягу из командной строки, она просто печатает старое сообщение.

Если я очищу свой проект, конфигурация запуска Netbeans перестанет печатать сообщение.

Может кто-нибудь объяснить, как именно Netbeans выполняет мое приложение?Имеет ли это странное поведение смысл или его следует считать ошибкой?

1 Ответ

1 голос
/ 12 августа 2011

Я думаю, что Weld не подберет ваши аннотированные компоненты, если вы забыли META-INF / beans.xml, проверяли ли вы наличие META-INF / beans.xml в classpath?

...