2011-09-06 14 views
14

que tienen la configuración de frijol primavera siguienteerror al crear la haba con el tipo java.io.File [tipos de argumentos de constructor ambiguo]

<bean id="fileBean" class="java.io.File"> 
    <constructor-arg type="java.lang.String" 
        value="$prop{file.path.property}" />  
    </bean> 

Estoy recibiendo el siguiente error

org.springframework.beans.factory.UnsatisfiedDependencyException: 
Error creating bean with name 'fileBean' defined in class path resource [context.xml]: 
Unsatisfied dependency expressed through constructor argument with index 0 of type 
[java.net.URI]: Ambiguous constructor argument types - did you specify the correct 
bean references as constructor arguments? 

Hay solo un constructor para java.io.File con un solo parámetro de cadena, por lo que no estoy seguro de por qué esto es ambiguo. Cualquier ayuda apreciada.

Respuesta

26

Encontrados this link que explican lo que está sucediendo. Resulta que spring coincidirá con los argumentos por tipo si no hay ningún índice de argumento especificado. En este caso, Spring toma mi único argumento String y lo pasa al constructor java.io.File que toma TWO strings. Esto se puede solucionar especificando el índice constructor-arg.

<bean id="fileBean" class="java.io.File"> 
    <constructor-arg index="0" 
        type="java.lang.String" 
        value="$prop{file.path.property}" />  
</bean> 
4

Sólo mis dos centavos aquí: tuve exactamente el mismo problema hoy. Tengo una prueba de unidad para verificar si Spring puede leer mi configuración XML y generar todos los beans necesarios. Estaba fallando porque estaba editando el archivo XML incorrecto. Estaba editando una versión "dist" de una compilación Ant, en lugar de la versión correcta del control de código fuente.

Lección aprendida: Lea los mensajes de excepción de Spring (con rutas de archivos XML) muy de cerca!

+0

Me pasó lo mismo, la excepción resultó ser en otro archivo xml que he estado editando –

Cuestiones relacionadas