我正在學習JavaEE CDI,並使用NetBeans 8.0 + Glassfish 4創建了一個小型應用程序。 升級到NetBeans 8.0.1和Glassfish 4.1後,會有很多錯誤報告某些軟件包不存在。 例如,我不能使用下面的代碼,因爲我收到包javax.enterprise.event不存在的消息。升級到NetBeans 8.0.1和Glassfish 4.1後不存在軟件包1,1
package jlacerda;
import javax.inject.Inject;
import javax.enterprise.event.Event;
public class CMensagem
{
@Inject
private Event<Evento> gerarEvento;
public String getMensagem()
{
return "Hello world!";
}
public void gerarEvento()
{
Evento evento = new Evento();
evento.setMensagem("Objeto criado a partir da classe CMensagem");
gerarEvento.fire(evento);
}
}
這種情況也會發生套餐:
import javax.enterprise.inject.Alternative;
import javax.decorator.Decorator;
import javax.decorator.Delegate;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.InjectionPoint;
如果我改變服務器爲GlassFish 4.0相同的代碼運行正常,所有的包都正確導入。
我在NetBeans和Glassfish論壇搜索,但我沒有發現任何像這樣的情況。
預先感謝任何可能幫助我解決這種情況的消息。
cdi-api.jar不在Glassfish 4.1的jar文件中。我手動將它添加到Netbeans的Libraries部分,並且應用程序編譯並正常工作。我只有一個焊接文件「weld-osgi-bundle.jar」,它也存在於Glassfish 4.0中,但在GF 4.1中它更小。非常感謝:) – javlacerda 2014-09-24 16:22:54
我在最新的GlassFish 4.1版本的glassfish/modules目錄中發現了cd-api.jar,所以我假設我不需要將它與我的應用程序捆綁在一起。但是如果沒有在NetBeans 8.0.2項目中將.jar明確添加到編譯庫中,我仍然無法編譯我的應用程序。我不知道這個庫在編譯器的作用域內有多大的魔力,所以我只需要在更新的時候嘗試把它取出(什麼?)。此外,看起來如果我取消選中庫列表中該jar的Package列,它將不會被包含在.war文件中,我相信我想避免它。 – 2015-01-16 19:08:24