Um arquivo dentro de um jar não é um arquivo (File), é uma entrada de um .jar
georgesq
isso quer dizer que ???
T
thingol
quando você faz isto:
BufferedReader reader = new BufferedReader( new InputStreamReader( LoadXml.class.getResourceAsStream( file )));
você obtém uma InputStream especial, que é o resultado de o ClassLoader procurar a resource no CLASSPATH até achar algo que bata com a especificação passada para getResourceAsStream. Se ele achar no JAR, então essa InputStream é na verdade um tipo de JarInputStream que já lhe dá o resultado descompactado (lembre-se que JAR = ZIP e arquivos ZIP contém normalmente arquivos compactados). Se ele achar “solto” (fora de um .jar, mas no CLASSPATH), é uma FileInputStream mesmo.
Quando você faz da outra maneira (usando File) você pega uma outra coisa que não tem nada a ver.
georgesq
no frigir dos ovos… se preciso ler ele como File, terei que tirar ele do jar…
correto?
T
thingol
Uma InputStream não é suficiente para você?
Por que é que você precisa de um File?
Se precisar disso, então você vai ter de extrair mesmo.
(Só para você ter uma idéia. Digamos que fosse possível pegar um File. Esse File seria o arquivo .jar, não o que está contido dentro do .jar. E além disso, se fosse pegar o que está dentro do .jar, poderia estar compactado - aí você teria de descompactar manualmente (argh).
georgesq
entendi, seu raciocinio esta certo… não tenho pra onde correr, vou conversar com a empresa pra ver uma solução, visto q jar é dum sistema em produção