# "An error occured while initializing MyFaces"



## Studdi23 (16. Dez 2010)

Hallo zusammen,

ich schlage mich seit zwei Tagen mit einer Fehlermeldung rum, mit der ich absolut nichts anfangen kann. Arbeite mich zur Zeit in JSF ein und möchte das Beispiel aus einem Buch zum Laufen bringen. Wenn ich das Projekt im Tomcat (6.0.20) deploye, erhalte ich während der Server startet folgenden Fehler:


```
...
16.12.2010 11:27:35 org.apache.myfaces.webapp.AbstractFacesInitializer initFaces
SCHWERWIEGEND: An error occured while initializing MyFaces: javax.naming.NameNotFoundException: Name java:comp is not bound in this Context
javax.faces.FacesException: javax.naming.NameNotFoundException: Name java:comp is not bound in this Context
	at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:232)
	at org.apache.myfaces.webapp.AbstractFacesInitializer._createEagerBeans(AbstractFacesInitializer.java:213)
	at org.apache.myfaces.webapp.AbstractFacesInitializer.initFaces(AbstractFacesInitializer.java:130)
	at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:111)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
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.apache.myfaces.config.annotation.ResourceAnnotationLifecycleProvider.lookupFieldResource(ResourceAnnotationLifecycleProvider.java:127)
	at org.apache.myfaces.config.annotation.AllAnnotationLifecycleProvider.checkFieldAnnotation(AllAnnotationLifecycleProvider.java:93)
	at org.apache.myfaces.config.annotation.ResourceAnnotationLifecycleProvider.checkAnnotation(ResourceAnnotationLifecycleProvider.java:78)
	at org.apache.myfaces.config.annotation.ResourceAnnotationLifecycleProvider.processAnnotations(ResourceAnnotationLifecycleProvider.java:55)
	at org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider.newInstance(NoInjectionAnnotationLifecycleProvider.java:46)
	at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:162)
	... 18 more
16.12.2010 11:27:35 org.apache.catalina.startup.HostConfig deployWAR
...
```

"java:comp" lässt auf JNDI zurückschließen, es wird aber nirgends im Code JNDI benutzt, also in der Art


```
Properties props = new Properties();
      props.put(Context.INITIAL_CONTEXT_FACTORY,
          "com.sun.jndi.fscontext.RefFSContextFactory");
      props.put(Context.PROVIDER_URL, "file:///");
Context initialContext = new InitialContext(props);
Object obj = initialContext.lookup(name);
```

Im Hintergrund wird der Inhalt einiger JSF-Seiten mit Informationen gefüllt, die mittels JPA aus einer MySQL-Datenbank geholt werden. Der Datenbankzugriff erfolgt direkt, also ohne JNDI, so daß die Verbindungsdaten in der persistence.xml stehen. Hier der Inhalt:

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<persistence-unit name="OnlineBankingJSF" transaction-type="JTA">

		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

		<class>de.jsfpraxis.entity.Kunde</class>
		<class>de.jsfpraxis.entity.Kontokorrent</class>
		<class>de.jsfpraxis.entity.Konto</class>
		<class>de.jsfpraxis.entity.Festgeld</class>
		<class>de.jsfpraxis.entity.Buchung</class>

		<properties>
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/onlinebanking" />
			<property name="javax.persistence.jdbc.user" value="user" />
			<property name="javax.persistence.jdbc.password" value="password" />
	<!--  
			<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
			<property name="eclipselink.ddl-generation.output-mode"
				value="database" />
	-->
			<property name="eclipselink.logging.level" value="FINE" />
		</properties>
	</persistence-unit>
</persistence>
[/XML]

Über Google finde ich zu dieser Meldung immer nur Lösungsansätze zu JNDI in Verbindung mit einer korrekten Tomcat-Konfiguration, was aber wie gesagt nicht Gegenstand des Problems sein kann. Kann mir jemand vielleicht sagen was da nicht stimmt??

Gruß
Mario

Hier noch der Inhalt der web.xml:

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<display-name>Online Banking</display-name>


	<context-param>
		<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
		<param-value>true</param-value>
	</context-param>

	<context-param>
		<param-name>javax.faces.PROJECT_STAGE</param-name>
		<param-value>Development</param-value>
	</context-param>

	<context-param>
		<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
		<param-value>true</param-value>
	</context-param>

	<context-param>
		<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
		<param-value>true</param-value>
	</context-param>


	<!-- 
	<context-param>
  		<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
  		<param-value>true</param-value>
 	</context-param>
 	 -->


	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>

</web-app>

[/XML]


----------



## megaflop (17. Dez 2010)

Welche MyFaces-Version benutzt du denn?


----------



## Studdi23 (17. Dez 2010)

ich verwende myfaces 2.0.2. irgendwas sagt mir das was mit den library versionen nicht stimmt. wie stelle ich fest ob es inkompatibilitäten gibt? mittlerweile braucht man ja für ne einfache webapplikation mit datenbankzugriff  über 15 bibliotheken von denen jeweils mindestens 3 verschiedene versionen existieren die sich je nach kombination nicht miteinander verstehen. ist echt zum mäuse melken sowas 
jemand ne idee die mich weiter bringt??


----------

