Ae gente… primeiramente deixem-me explicar minha situação atual:
// Variáveis de Ambiente - no Windows XP
JAVA_HOME C:\j2sdk1.4.1_03
PATH Tudo_Normal_Por_Aqui;%JAVA_HOME%\bin
CLASSPATH .;C:\j2sdk1.4.1_03\lib\dt.jar;C:\j2sdk1.4.1_03\lib\tools.jar
// obs: reparem que o diretorio corrente esta incluso na CLASSPATH…
// as classes de exemplo
// *** Classe1.java ***
package com.exemplo;
public class Classe1 {
public Classe1( … )
{
…
}
}
// *** Classe2.java ***
package com.exemplo;
public class Classe2 {
Classe1 referencia; // variavel de instancia
public Classe2( … )
{
referencia = new Classe1( … );
…
}
}
Ok, sempre compilei e rodei meus .java e .class normalmente, a unica exceção é nesse caso que vou lhes exemplificar… O meu problema é o seguinte, tenho essas duas classes ai em cima… Nos dois arquivos declaro que fazem parte do pacote "com.exemplo". No meu diretorio corrente (onde estão as duas classes), compilo a Classe1.java (javac -d . Classe1.java), o compilador cria os diretorios referentes a instrução package (.\com\exemplo) e larga la dentro a Classe1.class. Tudo bem, então, eu copio o arquivo Classe2.java para dentro de .\com\exemplo para compilá-lo, não vou precisar importar a Classe1 dentro do arquivo Classe2.java pq vão estar no mesmo diretorio, e… quando o compilador procurar pela classe Classe1 que fiz referencia em Classe2.java, ele vai verificar o diretorio corrente, onde estão os arquivos Classe1.class e Classe2.java, sendo assim… sem problemas não é? Só que… quando vou compilar Classe2.java, ele da o seguinte erro:
Classe2.java:5: cannot resolve symbol
symbol : class Classe1
location: class com.exemplo.Classe2
Classe1 referencia;
^
…
…
Bem… o compilador aponta que não reconhece a Classe1, mas… ele não deveria procurar por ela no diretorio corrente? Que é onde ela se encontra? Tentei compilar usando a opção -classpath de javac… mas não obtive sucesso…
javac Classe2.java -classpath .
"." -> para o diretorio corrente… Mas da o mesmo erro. E outra, tb exclui a CLASSPATH, pois ja fiquei sabendo que quando setamos a CLASSPATH no sistema… ela tira o diretorio corrente da procura pelas classeses, mas eu botei o diretorio corrente incluso nela quando a setei! Sendo assim não soube mais oque fazer… estaria eu usando de forma errônea a opção -classpath do compilador? Ou oque?
Caso alguém possa me ajudar, desde já agradeço []´s
Já tentou compilar esse arquivo (classe2) estando este fora da pasta?
bem… se eu por uma instrução import para Classe1 na Classe2, e tirar a Classe2 do pacote em que esta Classe1… vai compilar sem problemas, mas… quero saber oque estou fazendo de errado neste caso que citei ai em cima… pq não está procurando no diretorio corrente a minha Classe1? …Estou em duvidas sobre o comportamento do compilador neste caso especifico…
bem, a minha sugestão era que você tirasse o arquivo Classe2.java do pasta e o tentasse compilar daí, mas ele permeneceria incluso no mesmo pacote da Classe1…