Estou tentando fazer um exemplo que vi em um livro mas não esta dando certo. Recebo uma mensagem no console do eclipse dizendo :
Ocorreu um erro com o arquivo src\br\livrojavanaweb\servlet\contador.txt (O sistema não pode encontrar o caminho especificado)
Ocorreu um erro com o arquivo src\br\livrojavanaweb\servlet\contador.txt (O sistema não pode encontrar o caminho especificado)
Alguem tem uma dica ?
BufferedReader reader = new BufferedReader(new FileReader("src\\br\\livrojavanaweb\\servlet\\contador.txt"));
setContador((Integer) Integer.parseInt(reader.readLine()));
reader.close();
coloque ‘/’ antes de src tbm. Se não vc precisará indicar o caminho até onde sua aplicação está publicada no seu seevidor.
Vc tá colocando dentro da pasta(package) que está seu código???
qual é o absolut_path do seu aquivo contador.txt?
Post o local físico do seu arquivo no sistema por favor!
[color=red] Ex: C:/blablabla/seuWorkspace/…[/color]
isso aqui que vc perguntou ?
C:\workspace\LivroJavaNaWeb\src\br\livrojavanaweb\servlet
Entao Rafael, com o caminho absoluto deu certo. Mas sempre tem que ser assim ? nao tem jeito pra pegar a partir do src apenas ?
Tive esse problema usando Flex com Eclipse/NetBeans
Foi resolvido com uma configuração que faz nas propriedades do projeto,
setando já uma parte do diretório padrão para dar certo se quiser não
precisar digitar todo o caminho.
No caso me apoiei na vídeo aula do Prof. Neri ensinando a usar Java + Flex
O correto é não usar caminhos absolutos.
Tente entender como o mecanismo funciona, de que forma o java trata a questão dos caminhos de arquivos.
Por exemplo, crie uma classe como esta
import java.io.File;
public class ClasseCaminho {
public static void main(String args[]){
File f = new File("");
System.out.println("Caminho absoluto: " + f.getAbsolutePath());
}
}
Salve em algum lugar (arquivo ClasseCaminho.java), compile com
javac ClasseCaminho.java
E execute com
java ClasseCaminho
O console deverá exibir o caminho absoluto até aquela pasta.
Faça modificações no parâmetro do construtor File(""), colocando, por exemplo, uma contra barra
import java.io.File;
public class ClasseCaminho {
public static void main(String args[]){
File f = new File("/");
System.out.println("Caminho absoluto: " + f.getAbsolutePath());
}
}
Salve, compile e execute novamente. Veja qual foi a diferença.
Você deve estudar melhor a classe File e entender de que forma ela pode te auxiliar e/ou atrapalhar quando você tem necessidade de gerar ou obter um arquivo no sistema.
Lembrando, caso esteja em um ambiente web, tudo isso será diferente.
Não precisa e nem deve…
C:\workspace\LivroJavaNaWeb\src\br\livrojavanaweb\servlet
a barra ( ‘/’ ) antes de src deveria subistituir “C:\workspace\LivroJavaNaWeb”…
e a url do ser arquivo tinha que ser: src/br/livrojavanaweb/servlet/contador.txt
BufferedReader reader = new BufferedReader(new FileReader("/src/br/livrojavanaweb/servlet/contador.txt"));
setContador((Integer) Integer.parseInt(reader.readLine()));
reader.close();
Isso aqui (ACIMA) tinha que funfar… Verifique se quando se Tomcat/JBoss subir se ele tá colocando o arquivo no target… pois tem que ter um cópia desse arquivo dentro do seu server.
não deveria ser “/br/…” ??
Ou tenta mover pra raiz do projeto e usa “/contator.txt” .-.
ou mover para uma pasta na raiz “/files/contador.txt”
Talvez isso tudo nem seja preciso.
Primeiro, obtenha o contexto da aplicação, com o método
getServletContext()
A partir dele, pode-se obter a localização de qualquer arquivo que existe neste contexto.
Não sabe o que é contexto? É o projeto em si, mas compilado e colocado em um arquivo .war (neste caso).
Será que no livro Servlet & JSP - Use a Cabeça
tem com aprender técnicas avançadas assim?
Estou começando a ler ele ainda, por isso quem já o leu
e quiser deixar uma dica aí, seja bem vindo.
Escrevi para acrescentar se possível algo mais no conteúdo pegando uma carona.
Obrigado a todos aí pelas orientações…
[quote=JavaDreams]Será que no livro Servlet & JSP - Use a Cabeça
tem com aprender técnicas avançadas assim?
Estou começando a ler ele ainda, por isso quem já o leu
e quiser deixar uma dica aí, seja bem vindo.
Escrevi para acrescentar se possível algo mais no conteúdo pegando uma carona.[/quote]

Boa noite senhores!
Me desculpem por estar incomodando vocês com um assunto que, aparentemente, deveria ser tão simples, no entanto estou encontrando a mesma dificuldade, e até então não consegui uma solução eficiente.
Estou trabalhando em um projeto que usa Spring, jsf, maven e jpa. Necessito de que o projeto faça a leitura de um arquivo .sql para inserir um grupo de cidades no banco de dados. O nome do arquivo é cidades.sql, bem óbivio. rsrsrs.
Dentro da estrutura de diretórios, o meu arquivo se encontra no seguinte caminho: src/resources/scripts/cidades.sql, mas não adianta, a aplicação não consegue encontrar o arquivo.
Método da Classe de inicialização do sistema
private void inserirCidades() {
try {
List<Cidade> cidades = new ArrayList<Cidade>();
cidades = cidadeDao.listar();
if (cidades.size() == 0){
String caminho = "/scripts/cidades.sql";
cidadeDao.incluirViaArquivo(caminho);
}
} catch (Exception e) {
UtilLog.getLog().error("Erro na Inserção de Cidades: " + e.getMessage(), e);
}
}
Método da Classe que executa a leitura do arquivo
@Override
@SuppressWarnings("resource")
public void incluirViaArquivo(String caminho) throws IOException {
File arquivoSql = new File(caminho);
FileReader fr = new FileReader(arquivoSql);
BufferedReader br = new BufferedReader(fr);
String linha = br.readLine();
while( linha != null ){
Query query = em.createNativeQuery(linha);
query.executeUpdate();
}
}
O que pode estar havendo de errado pessoal?