Abertura de arquivos no Linux

Oi pessoal,

Para resolver um problema no nosso sistema, criamos uma solução que lê um arquivo XML. Segue o código:

public ValidationLookup() { try { factory = DocumentBuilderFactory.newInstance(); builder = factory.newDocumentBuilder(); document = builder.parse("C:\eclipse\workspace\projetos\pcp\WEB-INF\validation-lookup.xml"); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }

Ela funciona muito bem, mas apenas nas máquinas de desenvolvimento. Como vcs podem ver, o caminho foi declarado de forma bem específica.

Agora colocamos o sistema em um servidor Linux, mas está dando pau pois ele não encontra o arquivo no local indicado. Tentei o caminho completo "/usr/local/tomcat/jakarta-tomcat-5.0.28/webapps/pcp/WEB-INF/validation-lookup.xml e também "/WEB-INF/validation-lookup.xml, mas nada… alguém sabe como posso colocar para que ele leia no Linux? Ta me travando isso :frowning:

valeu pessoal!

Já verificou as permissões do arquivo?!

Sim, está -rw-r–r-. :cry:

está dando a seguinte mensagem:

java.net.MalformedURLException: unknown protocol: c at java.net.URL.<init>(URL.java:574) at java.net.URL.<init>(URL.java:464) at java.net.URL.<init>(URL.java:413) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) at br.com.nomus.controle.negocio.ValidationLookup.<init>(ValidationLookup.java:29) at br.com.nomus.controle.negocio.Validacao.validate(Validacao.java:65) at br.com.nomus.visao.action.ClienteAction.inserir(ClienteAction.java:64) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:276) at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:162) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:595) Sep 4, 2006 11:47:33 AM org.apache.struts.action.RequestProcessor processException WARNING: Unhandled Exception thrown: class java.lang.NullPointerException

java.net.MalformedURLException: unknown protocol: c

Acho que você, por algum motivo, deixou escapar o nome do arquivo como “c:/alguma coisa”. É por isso que ele reclamou do protocolo (que é aquilo que vem antes do “:” em uma url, por exemplo: “http://www.guj.com.br” ou “file:/usr/bin/teste.xml”

Faz todo sentido, parece q ele não está atualizando o arquivo, pois tirei o “c:” faz tempo… vou ver se ao inves de mudar na mao faco o deploy do .war novamente, muito obrigado!!

Dica: para esse tipo de solução (onde se quer ler um arquivo fixo em um diretório que está no CLASSPATH da aplicação), é melhor usar a InputStream retornada por getClass().getClassLoader().getResourceAsStream(), em vez de usar um nome para o arquivo.

Oi pessoal, estou com o mesmo problema que o bonfarj, tentei o que o thingol disse, mas não funcionou, estou tentando outras forma,s mas ate agora nada.
Não sei porque não funciona, pois no meu struts-config.xml tem alguns lugares que existe o “/WEB-INF/…” e funciona normalmente. Será que alguem tem uma ideia do porque isso ocorre?
obrigado

Pessoal consegui resolver o problema, só que tiver que colocar o caminho absoluto do arquivo, não consegui fazer com que o “/WEB-INF/…” funcionasse.
Se alguem tiver uma outra forma, eu agradeço
abraços