2010-10-12 5 views
10

Pobrałem kopię pliku servlet-api.jar z witryny java2s.com. Skąd mam wiedzieć, jaka to wersja? Nie ma odniesienia na stronie.Skąd mam wiedzieć, jaka wersja servlet-api.jar mam?

EDIT

Ah. Przeprosiny. Powinienem był wymieniony treść wyjściu WordPad Po dwukrotnym kliknięciu na plik MANIFEST.MF w słoiku dostałam:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.6.5 
Created-By: 1.5.0_06-b05 (Sun Microsystems Inc.) 

Jak widać nie zrobił mi stąd wersję pytanie.

+0

Co chcesz zrobić z tym plikiem JAR? Zawsze mnie to przeraża, gdy jeden chwyta * oddzielny * plik, który pierwotnie powstał w (dużej) implementacji i faktycznie powinien/nie mógł być użyty osobno. – BalusC

+0

Użyłem Tomcat 6 i migruję do Glassfish 3. Przeszukałem helikarchię Glassfish na słoik i nie było jej. Najpierw muszę rozwiązać inne problemy, ale zastanawiałem się, czy muszę pobrać słoiki, o których pisałem w Tomcacie po migracji. – volvox

+0

Dlaczego chcesz to wiedzieć? Czy kompilujesz używając 'javac' w konsoli poleceń? Cóż, w Glassfish Servlet API znajduje się wewnątrz 'javaee.jar'. Przy okazji dobrze wiedzieć, że możesz używać symboli wieloznacznych '*' w ścieżce klas od wersji 1.6, dzięki czemu możesz po prostu zrobić '/ path/to/appserver/lib/*' zamiast definiować każdy JAR osobno. Nie mieszaj również implementacji API. Upewnij się, że twoja "WEB-INF/lib" jest * wolna * od bibliotek specyficznych dla servletcontainer. – BalusC

Odpowiedz

11

można go uzyskać z META-INF, można zbadać zawartość pliku jar za pomocą narzędzia win rar lub takich narzędzi do archiwizacji.

Name: javax/servlet/ 
Specification-Title: Java API for Servlets 
Specification-Version: 2.4 

Ja osobiście wolę maven repo do pobrania słoika z.

5

można wyodrębnić MANIFEST.MF z katalogu META-INF z pliku jar przy użyciu

jar xf servlet-api.jar META-INF/MANIFEST.MF 

manifest do wersji 2.4, która pochodzi z tomcat wygląda to na przykład

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.6.2 
Created-By: 1.4.2_06-b03 (Sun Microsystems Inc.) 

Name: javax/servlet/ 
Specification-Title: Java API for Servlets 
Specification-Version: 2.4 
Specification-Vendor: Sun Microsystems, Inc. 
Implementation-Title: javax.servlet 
Implementation-Version: 2.4.public_draft 
Implementation-Vendor: Apache Software Foundation 
+0

Lub w powłoce: '$ unzip -q -c /opt/tomcat/apache-tomcat-6.0.32/lib/servlet-api.jar META-INF/MANIFEST.MF | grep '^ Specification-Version'' = yields => 'Specification-Version: 2.5' (note (do OP):' servlet-api * .jar' zwykle nie jest "pobierany" oddzielnie od samego serwera, więc należy "po prostu wiem", że tomcat 6.0 implementuje aplet-api 2.5, sam słoik można nazwać cokolwiek (jak w przypadku w/glassfish)) – michael

+0

(przepraszam, po prostu zdałem sobie sprawę, że to było starożytne pytanie, nie wiem, dlaczego znalazłem to jako ostatnio zadane pytanie (oznaczono java). Również po to, aby dodać coś rzeczywiście konstruktywnego, jest to rodzaj duplikatu http://serverfault.com/questions/384172/keeping-application-library-versions-in- synchronizacja z serwerem) – michael

0

jest to w zasadzie wewnątrz pliku manifestu JAR wynikających /META-INF/MANIFEST.MF:

Name: javax/servlet/ 
Specification-Title: Java API for Servlets 
Specification-Version: 3.0 
Specification-Vendor: Sun Microsystems, Inc. 
Implementation-Title: javax.servlet 
Implementation-Version: 3.0.FR 
Implementation-Vendor: Apache Software Foundation 
10

użyć poniższego fragmentu kodu:

<%= session.getServletContext().getMajorVersion() %>. 
<%= session.getServletContext().getMinorVersion() %> 
+0

Co to za problem? – Tires

+0

to samo pytanie jest tutaj. Uważam, że jest to najprostszy sposób. –

+0

Moje pytanie było spowodowane negatywnymi głosami w dół. Osobiście uważam, że nie ma powodu, aby bawić się przy pomocy manifestu. – Tires

0

dla zwolenników, gdyby był on w dystrybucji jnlp, nie może być towarzyszący „version.xml” pliku, który mówi, co wersje każdy słoik jest odpowiednio.