java eclipse resources jar

java - Cómo empaquetar los recursos en el tarro correctamente



eclipse resources (1)

Sé que hay otras preguntas por ahí que apuntan al mismo problema, pero la cosa es que las soluciones no funcionan para mí. Tengo una pequeña herramienta que se supone que debe leer los archivos que quiero tener y empaquetar como recursos y confiar en otros proyectos (estoy usando Eclipse Helios) que me encantaría tener como frascos en lugar de clases individuales.

Como una aplicación dentro de Eclipse puedo acceder a mis recursos a través de

String path = MyClass.class.getClassLoader().getResource("resources/" + name + ".SOURCE").getPath(); System.out.println(path); File file = new File(MyClass.class.getClassLoader().getResource("resources/" + name + ".SOURCE").toURI()); defaultSource = readSOURCEFile(file);

si y solo si coloco la carpeta de recursos debajo de la ruta de salida (las fuentes compiladas) NO si la coloco en mi carpeta src.

Cuando empaqueto el proyecto, los recursos en la carpeta raíz o en la carpeta de clases no están empaquetados en absoluto. Si tengo los recursos en mi carpeta src, se empaquetan en src / resources.

Utilizo Export - Runnable Jar, ¿qué estoy haciendo mal? Si trato con Export - Jar, puedo empaquetar mis fuentes y recursos correctamente pero tengo problemas con la configuración de la clase principal y no puedo ejecutar el jar. El Manifiesto es correcto y la clase está ahí :-(.

Segundo problema: en el contenedor empaquetado me aparece el error: el URI no es jerárquico (después de mover los recursos dentro del contenedor manualmente, pude ejecutar el archivo)

¡Gracias por adelantado!

He vinculado las fuentes en el espacio de trabajo, ¿es eso un problema?


Marque la carpeta de resource debajo de la carpeta raíz de su proyecto como "Carpeta de origen" en Eclipse (haga clic con el botón derecho en la carpeta, vaya a "Crear ruta"> "Usar como carpeta de origen"). Luego lee los recursos como este:

InputStream is = MyClass.class.getClassLoader().getResourceAsStream(name + ".SOURCE"); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line = reader.readLine();