Caminho

8 respostas
kmagnani

Alguém sabe se existe alguma forma de um objeto saber o caminho do seu .class?

8 Respostas

danieldestro

String path = getClass().getName().replace(’.’,’/’);

kmagnani

Mas isto não vai dar o caminho absoluto na máquina, apenas o caminho relativo… Eu queria algo do tipo /home/nomeusuario/…/arquivo.class.

jgbt

isso vai retornar o caminho fisico do pacote+nome da classe.
mas a localização, acho que não tem como… tem?

[]'s

cv1

So se voce souber como o ClassLoader que voce esta usando pegou essa classe - e, sinceramente, vc nao deveria saber, ou se importar com isso. :wink:

Pra que vc quer pegar esse caminho?

kmagnani

É pq tenho um arquivo que preciso ler em um ponto do programa (que roda em um servidor). Eu poderia colocar o caminho absoluto até este arquivo, afinal o servidor não é uma coisa que muda todo o dia. O problema que cada desenvolvedor utiliza máquinas com sistemas operacionais diferentes, e tb outras configurações, daí o caminho relativo seria mais jogo (até pq tem tb o CVS nesta história). Quando gravo um arquivo no disco sem caminho, só com o nome, para saber qual é a localização padrão, vejo q ele é gravado no diretório do eclipse (!!!), que é quem startou o tomcat.

Alguém tem uma idéia para resolver isto?

om1

Se vc fizer:

File arq = new File(".");
String caminho = arq.getAbsolutePath();

Não rola :?:

kmagnani

Desculpe não ter respondido ainda ontem…

Seguinte, quando faço isto, ele dá o caminho do eclipse, e não o do .class…

Dado o problema original acima, acho que posso resumir assim:

  1. Tenho que ler um arquivo que fica em um dado diretório da aplicação;

  2. A aplicação pode ficar em diferentes diretórios, mas o caminho relativo é sempre o mesmo;

  3. Como saber qual é o caminho absoluto que me leva ao arquivo (já que para as classes de arquivo de java, um caminho relativo seria um caminho relativo à quem startou a aplicação)?

Pessoal, se alguém ainda tiver alguma idéia…

Valeu!

danieldestro

Bom, o negócio é usar classpath. Como? Assim:

Imagine que sua app está nu diretório xyz, em qq lugar do seu sistema de arquivos. O legal seria você empacotar sua app (classes) num jar e criar o MANIFEST.MF e informar o classpath dele. Imagine que você vai criar/ler o arquivo do diretório dados, dentro de xyz. Então informe no seu Manisfest o caminho do dados no classpath:

Class-Path: dados

Com isso você pode pegar o arquivo assim:

getClass().getClassloader().getResource(“seuArquivo”);

Criado 13 de abril de 2005
Ultima resposta 14 de abr. de 2005
Respostas 8
Participantes 5