Este tutorial fue analizado por nuestros especialistas para que tengas la garantía de la exactitud de esta noticia.
Solución:
Su problema es que no sabe cuál es el directorio “actual”. Si inicia Tomcat en Linux como un servicio, el directorio actual podría ser cualquier cosa. Entonces new File(".")
obtendrá un lugar aleatorio en el sistema de archivos.
Usando la propiedad del sistema catalina.base
es mucho mejor porque el script de inicio de Tomcat catalina.sh
establecerá esta propiedad. Así que esto funcionará siempre y cuando no intentes ejecutar tu aplicación en un servidor diferente.
Un buen código se vería así:
File catalinaBase = new File( System.getProperty( "catalina.base" ) ).getAbsoluteFile();
File propertyFile = new File( catalinaBase, "webapps/strsproperties/strs.properties" );
InputStream inputStream = new FileInputStream( propertyFile );
Como puede ver, el código no mezcla cadenas y archivos. Un archivo es un archivo y un string es solo texto. Evite el uso de texto para el código.
A continuación, estoy usando getAbsoluteFile()
para asegurarme de obtener una ruta útil en las excepciones.
También asegúrese de que su código no acepte excepciones. Si hubiera podido ver el mensaje de error en su código, habría visto instantáneamente que el código intentó buscar en el lugar equivocado.
Por último, este enfoque es frágil. Su aplicación falla si cambia la ruta, cuando se usa un servidor web diferente y en muchos otros casos.
Considere extender la aplicación web strsproperties
para aceptar solicitudes HTTP. De esa manera, podría configurar su aplicación para conectarse a strsproperties
a través de una URL. Esto funcionaría para cualquier servidor web, incluso podría poner las propiedades en un host diferente.
Si su código se ejecuta dentro de un servlet, puede ser más fácil de usar getServletContext().getRealPath("/strs.properties")
para recuperar la ruta absoluta del archivo.
Te mostramos las comentarios y valoraciones de los lectores
Si posees algún recelo y forma de refinar nuestro artículo puedes añadir un informe y con deseo lo observaremos.