Mkdir gera pastas em locais diferentes (linha de comando X 2 cliques no jar)
7 respostas
Luiz_Augusto_Prado
Olá pessoal.
problema com programa para desktop:
depois que faço meu arquivo jar, tenho 2 opções para executa-lo:
dando 2 cliques no jar
ou em linha de comando fazer “java -jar nomejar.jar”
Só que esse jar possiu um mkdir que quando é executado em linha de comando, cria a pasta na mesma pasta do jar.
Já quando dou dois cliques no jar, ele cria na pasta raiz.
Por que isso? Como faço para que em abos os modos a pasta seja criada na mesma pasta do meu jar?
O comando assoc indica qual é a associação entre a extensão jar e o tipo (“MIME Type”) usado pelo Windows para iniciar um programa.
O comando ftype indica, dada uma associação (neste caso o nome é “jarfile”), qual é o comando usado pelo Windows para iniciar um programa a partir de de um arquivo com extensão .jar.
Luizao
Eu uso o seguinte método nesses casos:
privateStringgetJarFolder(){// get name and pathStringname=getClass().getName().replace('.','/');name=getClass().getResource("/"+name+".class").toString();// remove junkname=name.substring(0,name.indexOf(".jar"));name=name.substring(name.lastIndexOf(':')-1,name.lastIndexOf('/')+1).replace('%',' ');// remove escape charactersStrings="";for(intk=0;k<name.length();k++){s+=name.charAt(k);if(name.charAt(k)==' ')k+=2;}returns;}
Assim vc pega o caminho completo do jar, pode ser que te ajude.
Luiz_Augusto_Prado
Luizao:
Eu uso o seguinte método nesses casos:
privateStringgetJarFolder(){// get name and pathStringname=getClass().getName().replace('.','/');name=getClass().getResource("/"+name+".class").toString();// remove junkname=name.substring(0,name.indexOf(".jar"));name=name.substring(name.lastIndexOf(':')-1,name.lastIndexOf('/')+1).replace('%',' ');// remove escape charactersStrings="";for(intk=0;k<name.length();k++){s+=name.charAt(k);if(name.charAt(k)==' ')k+=2;}returns;}
Assim vc pega o caminho completo do jar, pode ser que te ajude.
Lembrei como fazia.
Para o programa funcionar eu colocava o Main do programa fora do pacote e criava um bat para executar o jar.
OBS: Alguem sabe dizer porque não é recomendável colocar classes (meu Main por exemplo) fora do pacote?
Uma idéia que tive para evitar que o usuário chame diretamente o jar, é implementar com esse seu código a busca pelas pastas que quero. Se ela não existir, lanço uma mensagem para o usuario informando que o arquivo de execução é o bat.
Pessoal, muitissimo obrigado à todos pelas respostas.
>
E
entanglement
A menos que a classe seja o ponto de entrada do programa (no seu caso o Main), eu não recomendo deixar outras classes fora do pacote.
É que você não consegue importar direito essas classes em alguns ambientes (como por exemplo, dentro de um JSP).
Luiz_Augusto_Prado
A menos que a classe seja o ponto de entrada do programa (no seu caso o Main), eu não recomendo deixar outras classes fora do pacote.
É que você não consegue importar direito essas classes em alguns ambientes (como por exemplo, dentro de um JSP).
Então quanto ao ambiente desktop fico tranquilo. Obrigado pela resposta.