2012-12-19 8 views
5

Mam aplikację Java EE w Netbeans 7.2.1. Próbując go (budynek kończy OK), pojawia się błąd w dzienniku Tomcat wdrożyć:Wyjątek Java EE: Nazwa java: comp nie jest związany w tym kontekście

Caused by: javax.naming.NameNotFoundException: Name java:comp is not bound in this Context 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:770) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:153) 
    at javax.naming.InitialContext.lookup(InitialContext.java:392) 
    at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:154) 
    at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87) 
    at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152) 
    at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:178) 
    at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95) 
    at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105) 
    at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:201) 
    at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:187) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1454) 

Patrząc na kod, który powoduje ten błąd znalazłem następujące:

public Object lookup(String name) throws NamingException { 
    return getURLOrDefaultInitCtx(name).lookup(name); 
    } 

Jak to jest spowodowane i jak mogę to rozwiązać?

+0

To się stanie w przypadku Tomcat, gdy z jakiegoś powodu spadnie dowolne JAR-y specyficzne dla serwletkonserwera w '/ WEB-INF/lib' (jest to typowy błąd startera w" naprawieniu "błędów kompilacji). Czy ty to zrobiłeś? – BalusC

+0

Pracuję z gotową aplikacją, więc może być. –

+0

Uh ok. Potwierdź za pomocą "Tak" lub "Nie". Jeśli jesteś całkowicie nieświadomy rzeczy (zostałeś wyrzucony w głębokiej dziurze, nie będąc przygotowanym w jakimś praktycznym samouczku JSP/Servlet?), Byłoby pomocne, gdybyś po prostu podał listę JAR-ów obecnych w '/ WEB-INF/lib' aplikacji internetowej. teczka. Można by wskazać, które w ogóle tam nie należą. – BalusC

Odpowiedz

8

To będzie w przypadku Tomcat zdarzyć, gdy masz jakiegoś powodu spadła arbitralnych JAR servletcontainer specyficzne takie jak jsp-api.jar, servlet-api.jar, catalina.jar, etc w webapp na /WEB-INF/lib. Powinieneś usunąć wszystkie pliki JAR specyficzne dla servletcontainer, które tam nie należą. Upewnij się także, że te pliki JAR nie są zagnieżdżone w innych plikach JAR, które są w środku WEB-INF/lib.

Jest to typowy błąd startera w celu "naprawienia" błędów kompilacji w bibliotekach JSP/Servlet, które powinny zostać rozwiązane inaczej; mianowicie poprzez skonfigurowanie projektu IDE do powiązania z "serwerem docelowym" w Netbeans lub "Docelowym środowiskiem docelowym" w Eclipse. IDE następnie automagicznie włącza biblioteki serwera podczas kompilacji.

+0

Dziękuję Balusc! Chcę zgłosić moje doświadczenie, więc może być przydatne dla innych. W moim przypadku, automatyczne rozwiązywanie problemów za pomocą eclipse zawierało zależności pom od tomcat, więc te automatyczne nie działały dokładnie z serwerem Eclipse tomcat. – M3rlino

+2

Oznacz biblioteki dostarczone przez kontener jako "dostarczone" w pom.xml. – BalusC