0
繼官方documentation後,我實現了一個非常簡單的Java SE焊接快速啓動類。Netbeans:奇怪的焊接行爲
@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中運行應用程序。
問題是... 這不是。
如果我更新我的Test類並從Netbeans運行,它會選擇更改。如果我從命令行運行jar,它只是打印舊的消息。
如果清潔我的項目,Netbeans的啓動配置停止打印訊息話題。
任何人都可以解釋究竟Netbeans運行我的應用程序?這種奇怪的行爲是否有意義或應該被視爲一個錯誤?
嗯,這是我的src/META-INF文件夾...但也許(僅僅是可能),運行爆炸時的Netbeans不包括它在運行的類路徑。 – 2011-08-12 21:41:02