Estoy tratando de leer un archivo en mi proyecto de maven en /src/main/resources/file.txt.

Estoy usando

URL url=this.getClass().getResource("/");
String filePath=url.getPath()+"file.txt";

objeto url obtiene el valor correcto cuando este se ejecuta través de eclipse.

Pero, cuando me paquete de la jarra y ejecutar en línea de comandos:

jar -cp myjar.jar SampleTest

Devuelve null para ‘url’ objeto y lanza un NullPointerException en la línea siguiente.

He ampliable mi Tarro archivo con un explorador de archivos y comprobado. Tiene el ‘file.txt» en «/» ubicación dentro de la Jarra.

Donde voy mal ?

  • usted debe tratar de URL url= getClass().getResource("/file.txt"); String filePath=url.getPath();
InformationsquelleAutor user691197 | 2012-06-20

2 Comentarios

  1. 8

    Hay (a menudo) no directorios dentro de los archivos jar. Para ello se volverá null.


    Si quieres obtener el archivo que usted podría conseguir que los recursos directamente:

    URL fileUrl = getClass().getResource("/file.txt");
    ...

    O simplemente:

    InputStream fileInputStream = getClass().getResourceAsStream("/file.txt");
    • Bien, funciona bien en eclipse. «/» puntos con el /los objetivo/clases de directorio cuando se ejecuta en eclipse.
    • Como escribí en mi respuesta: no Hay directorios dentro de los archivos jar – por ejemplo, Usted no puede obtener un recurso (directorio) que no existe. Cuando ejecuta el programa de eclipse tu classpath apunta a una ruta de archivo/directorio. En ese entorno se puede obtener la información de directorio utilizando Class.getResource.
    • Es posible obtener un directorio de URL en un vaso con getResource(«/dir») por medio de modificaciones en el proyecto pom.xml de alguna manera ??
    • Es posible, pero un hack, consulte esta página para más información.
  2. 2

    Debe mover ese archivo en tu CLASSPATH y obtener de esta manera:

    InputStream is = this.getClass().getResourceAsStream("file.txt");
    • file.txt es en /.
    • el archivo parece estar en el classpath
    • Estás asumiendo que en el classpath. ¿Su FRASCO tiene un manifiesto, con Clase de la Ruta de las entradas? Si no, añadir uno.

Dejar respuesta

Please enter your comment!
Please enter your name here