Si ya está en la ruta de clases, simplemente obténgalo de la ruta de clases en lugar del sistema de archivos del disco. No juegues con las rutas relativas java.io.File. Dependen del directorio de trabajo actual sobre el que no tiene ningún control desde el interior del código Java.
Suponiendo que ListStopWords.txtesté en el mismo paquete que su FileLoaderclase, haga lo siguiente:
URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());
O si todo lo que buscas en última instancia es en realidad InputStreamalgo:
InputStream input = getClass().getResourceAsStream("ListStopWords.txt");
Sin duda, esto es preferible a la creación de un new File()porque urlpuede que no represente necesariamente una ruta del sistema de archivos del disco, pero también podría representar la ruta del sistema de archivos virtual (lo que puede suceder cuando el JAR se expande en la memoria en lugar de en una carpeta temporal en el sistema de archivos del disco) o incluso una ruta de red que, por definición, no puede digerirse por el Fileconstructor.
Si el archivo -como sugiere el nombre del paquete- es en realidad un archivo de propiedades completo (que contiene key=valuelíneas) con la extensión "incorrecta", entonces puede alimentar InputStreamel load()método inmediatamente .
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));
Nota: cuando intente acceder a él desde el staticcontexto interno , utilice FileLoader.class(o lo que sea YourClass.class) en lugar de getClass()en los ejemplos anteriores.
properties.filesa2?