Erro com File ao gerar .jar

Boa tarde pessoal,

Estou com um problema que parece ser básico, mas que não sei resolver…

eu tenho

File diretorio = new File("src/itens/lib/");

E quando eu executo pelo netbeans nao tenho problema algum…
Porém quando eu construo o .jar e vou executar minha aplicação pelo .jar, ele da erro, como se esse caminho nao existisse…
Já tentei tirar o “src” do caminho mas tambem nao deu certo

Deve haver alguma maneira de resolver isso
Se alguém puder me ajudar
Ficaria muito grata

:wink:

Você está usando um caminho relativo. Assim, se não houver uma subpasta chamada “src/itens/lib” abaixo daquela em que você executou o seu JAR, o programa vai falhar.

e como usar esse caminho relativo?
o problema eu sei… nao existe a pasta src…
mas se eu tiro tbm nao funciona…

como eu devo fazer entao?

=/

Experimente usar um caminho completo, em vez de um caminho relativo:

File diretorio = new File("c:/Users/jLady/seuProjetoJava/src/itens/lib/");

o problema eh…

se eu for rodar esse .jar em outro lugar… o caminho muda…

não é?

e o objetivo desse jar é rodar em outro lugar…

Se você realmente não tiver como usar caminhos completos, use caminhos relativos e certifique-se de que os arquivos que você quer usar estão sempre disponíveis. No seu caso específico, você vai ter de se assegurar que a pasta a partir da qual você disparar seu arquivo JAR SEMPRE terá uma subpasta chamada “src/itens/lib”.

você não pode colocar o conteudo desta pasta lib dentro do seu jar?

A partir dai acessar o que precisa dentro do jar, ai onde quer que a pessoa levar o jar, a pasta de pré-requisito será levada junto…

entao… mas é exatamente aí q esta a minha duvida…
quando eu gero o jar ele cria o jar sem a “src”, porem se eu coloco no caminho sem “src” tambem nao funciona… entendeu?

File diretorio = new File("src/itens/lib/"); <<<<como está

File diretorio = new File("itens/lib/"); <<<como é o diretorio dentro do jar dps de compilado

porem se eu deixo o caminho assim nao funciona

Qual a estrutura dos diretórios do teu projeto?

maior_abandonado,

esse lib é um diretorio dentro do meu projeto

q seja itens/jaozinho

no meu codigo eu crio essa File desse diretorio pra saber quantos arquivos tem dentro… entendeu?

esse é pra chegar onde esta meu fonte

c:\Documents and Settings\ferrama\Desktop\Fuinha\projects\Teste\src\testebla

esse eh o caminho dentro do jar

c:\Documents and Settings\ferrama\Desktop\Teste.jar\testebla\

Talvez isto a ajude.
Bom, quando você instancia um objeto da classe File, precisa indicar o local onde este File está.
Se você passa uma String vazia (""), ele identifica o path como sendo o diretório atual onde a raiz se encontra.
A princípio, então, com a raiz é possível acessar qualquer coisa dentro dela:

public class tryit {
    public static void main(String[] args){
//pego a raiz do projeto como um File
        File f = new File("");
//com o método getAbsolutePath() pego o caminho da raiz e incluo o restante a ser encontrado
        File g = new File(f.getAbsolutePath()+"\src\noite.java");
        String cam = f.getAbsolutePath();
        String cam1 = g.getAbsolutePath();
        System.out.println(cam+"\n"+cam1);
    }
}

nao da certo… eu dou um .exists() e retorna false

Tenta assim…

InputStream ras = this.class.getResourceAsStream("/testebla/Insi.java");