Não encontra o caminho especificado

4 respostas
J

Gente uma ajuda por favor

estou com um grande problema

Minha aplicação pega um xml e o zipa

o grande problema é que ele não acha o caminho, não sei o pq se na verdade é o mesmo caminho do xml

ja fiz isso na minha maquina e deu certo, mais na hora que tento passar pro servidor da esse erro

18/04/2008 14:43:01 org.apache.jasper.servlet.JspServletWrapper service SEVERE: File "\shared\files\Tiss\download\sp06622_5831.zip (O sistema não pode encontrar o caminho especificado)" not found java.io.FileNotFoundException: \shared\files\Tiss\download\sp06622_5831.zip (O sistema não pode encontrar o caminho especificado) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:179) at java.io.FileOutputStream.<init>(FileOutputStream.java:70) at org.apache.jsp.sp.credenciados.saude.Tiss.apConta_jsp._jspService(apConta_jsp.java:2207) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) 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)

Bom o codigo é esse só pra simplificar mais meu problema

OBS: esse 306622_" + tx_login + ".xml existe nessa pasta que eu especifico e o tx_login é o login do usuario

String arquivo = "/shared/files/Tiss/download/sp/306622_" + tx_login + ".xml";

	byte[] buf = new byte[1024];
		
	ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("/shared/files/Tiss/download/sp/306622_" + tx_login + ".zip"));

	FileInputStream in = new FileInputStream(arquivo);
	
	zos.putNextEntry(new ZipEntry(arquivo));
		
	int len;
		
	while ((len = in.read(buf)) > 0) {
		zos.write(buf, 0, len);
	}
		
	zos.closeEntry();
	in.close();
	zos.close();

4 Respostas

S

em qual linha ele ta dando erro?

não conheço o ZipOutputStream
mas por acaso nessa linha

zos.putNextEntry(new ZipEntry(arquivo));

não deveria ser passado como parâmetro o in ?

J

Talvez você não tenha permissão para criar aquivos nessa pasta, tem?

Tente fazer isso:

File arq = new File("/shared/files/Tiss/download/sp/306622_" + tx_login + ".zip"); arq.createNewFile();

E veja se o arquivo é criado.

J

tenho acesso sim, um cara falou pra mim usar um tal de getRealPath alguem sabe de alguma coisa sobre isso

ele não me deu maiores informações, vou procurar alguma coisa no google

J

Existe essa pasta /shared no disco? Exatamente desse jeito? (Pelo path você está no linux né?)

Se esse path é relativo, então você precisa de getRealPath() mesmo.

Assim:

String arquivo = getServletContext().getRealPath("/shared/files/Tiss/download/sp/306622_" + tx_login + ".xml");

String zip = getServletContext().getRealPath("/shared/files/Tiss/download/sp/306622_" + tx_login + ".zip");

byte[] buf = new byte[1024];
		
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zip));

FileInputStream in = new FileInputStream(arquivo);
	
zos.putNextEntry(new ZipEntry(arquivo));
		
int len;
		
while ((len = in.read(buf)) > 0) {
   zos.write(buf, 0, len);
}
		
zos.closeEntry();
in.close();
zos.close();
Criado 18 de abril de 2008
Ultima resposta 18 de abr. de 2008
Respostas 4
Participantes 3