2013-03-22 57 views
8

我對javax的區別感到困惑。從jsf-api-2.2.0-m05.jar和jsf-impl-2.2.0-m05.jar中獲取faces-2.1.14.jar 我想在不使用maven的情況下製作一個jsf項目,同時搜索我看到的示例不同教程的不同jar依賴關係。從coreservlets的教程使用javax.faces-2.1.14.jar,我從另一個站點看到的另一個教程使用2個jar文件jsf-api-2.2.0-m05.jar和jsf-impl-2.2.0-m05。 jar 我想知道這兩組依賴關係的區別。 在此先感謝你們。javax.faces-2.1.14.jar與jsf-api-2.2.0-m05.jar和jsf-impl-2.2.0-m05.jar有什麼區別

回答

19

jsf-api-xxx.jar包含在軟件包java包javax.faces下的類。這個jar中的類是由JSF規範定義的標準API的實現。 jsf-impl-xxx.jar包含在java包com.sun.faces下的類,正如java包所示,它是Sun自己的JSF實現類。

javax.faces-xxx.jar實際上將前兩個jar文件合併在一起。在Maven倉庫中,它位於org.glassfish groupId下。你會在裏面找到javax.facescom.sun.faces java包。

那麼你應該爲你的發展使用什麼?其實你可以使用兩者。但推薦的方法是僅在編譯類路徑中包含jsf-api-xxx.jar。因此,您自己的應用程序不依賴於com.sun.faces包中的任何類,以實現其他JSF實現的可移植性的。如果您正在使用GlassFish等應用程序,那麼容器應該已經在運行時提供了JSF實現。你不應該把上面的JSF jar文件打包成你的war或ear文件,因爲服務器會提供所有這些文件。如果您使用的容器默認不帶有JSF實現(如Tomcat),則需要在WEB-INF/lib中打包javax.faces-xxx.jar或(jsf-api-xxx.jar + jsf-impl-xxx.jar)。

+1

這是我正在尋找的那種描述和比較。此外,用例特別是最後一段恰恰是困擾着我的問題。謝謝! – royjavelosa 2013-03-22 05:42:52

+0

@royjavelosa很高興能幫到你 – Lan 2013-03-22 14:12:25

0

它們是不同的版本。

  • javax.faces-2.1.14.jar爲2.1.14
  • JSF-API-2.2.0-m05.jar和JSF-IMPL-2.2.0-m05.jar組合JAR文件是2.2.0-m05的單獨JAR。

版本之間的差異可以在發行說明中找到,但2.2和2.1是不平凡的不同。