Estranhamente não reconhece outra classe no mesmo package

6 respostas
M

Bom dia a todos, antes de tudo obrigado a quem responder...

Bom... o que acontece é o seguinte, eu tava fazendo uns testes com RMI, cheguei a ouvir falar que no java 1.4 é diferente... enfim, vou precisar mecher com RMI em um software desktop que está rodando no 1.4, resolvi instalar essa versão aqui na minha maquina.

Ai que começou a dar problema, eu estava tentando o rmic (lendo o tutorial daqui do guj mesmo) e não estava encontrando a classe pelo erro que era apresentado... estranhei, e criei duas classes simples na mesma pasta, uma tendo objeto da outra, quando descobri que a segunda compila, mais a primeira não encontra a classe segunda por isso não compila onde usa o objeto dela, vejam:

public class Segundo{

	public void metodo(){
		System.out.println("executou o método");
	}

}
public class Primeiro{

	public Segundo segundo;	

	public Primeiro(){
		super();
	}

	public void setSegundo(Segundo segundo){
		this.segundo = segundo;
	}

	public Segundo getSegundo(){
		return segundo;
	}

}

eu fiz dessa forma no dos:

C:\Documents and Settings\falves\Desktop\teste>dir
 O volume na unidade C não tem nome.
 O número de série do volume é 7450-F912

 Pasta de C:\Documents and Settings\falves\Desktop\teste

05/01/2010  07:55    <DIR>          .
05/01/2010  07:55    <DIR>          ..
04/01/2010  16:02               227 Primeiro.java
04/01/2010  17:11               107 Segundo.java
               2 arquivo(s)            334 bytes
               2 pasta(s) 112.026.161.152 bytes disponíveis

C:\Documents and Settings\falves\Desktop\teste>javac Segundo.java

C:\Documents and Settings\falves\Desktop\teste>javac Primeiro.java
Primeiro.java:3: cannot find symbol
symbol  : class Segundo
location: class Primeiro
        public Segundo segundo;
               ^
Primeiro.java:9: cannot find symbol
symbol  : class Segundo
location: class Primeiro
        public void setSegundo(Segundo segundo){
                               ^
Primeiro.java:13: cannot find symbol
symbol  : class Segundo
location: class Primeiro
        public Segundo getSegundo(){
               ^
3 errors

C:\Documents and Settings\falves\Desktop\teste>dir
 O volume na unidade C não tem nome.
 O número de série do volume é 7450-F912

 Pasta de C:\Documents and Settings\falves\Desktop\teste

05/01/2010  07:56    <DIR>          .
05/01/2010  07:56    <DIR>          ..
04/01/2010  16:02               227 Primeiro.java
05/01/2010  07:56               403 Segundo.class
04/01/2010  17:11               107 Segundo.java
               3 arquivo(s)            737 bytes
               2 pasta(s) 112.026.165.248 bytes disponíveis

C:\Documents and Settings\falves\Desktop\teste>javac -cp .\ Primeiro.java

C:\Documents and Settings\falves\Desktop\teste>dir
 O volume na unidade C não tem nome.
 O número de série do volume é 7450-F912

 Pasta de C:\Documents and Settings\falves\Desktop\teste

05/01/2010  07:56    <DIR>          .
05/01/2010  07:56    <DIR>          ..
05/01/2010  07:56               380 Primeiro.class
04/01/2010  16:02               227 Primeiro.java
05/01/2010  07:56               403 Segundo.class
04/01/2010  17:11               107 Segundo.java
               4 arquivo(s)          1.117 bytes
               2 pasta(s) 112.026.165.248 bytes disponíveis

C:\Documents and Settings\falves\Desktop\teste>java -version
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)

C:\Documents and Settings\falves\Desktop\teste>

estranhamente não está reconhecendo classes que estão na mesma pasta, mesmo package... eu tenho que adicionar o .\ no classpath (antes não precisava). Mesmo depois que tirei todas as versões do java e coloquei essa versão (6 update 7) continuou dando problema (antes estava o 6 up 17).

bom... eu sei que se eu colocar no classpath o .\ vai "parar de dar esse problema", mais fiquei curioso quanto ao motivo disso ter acontecido... alguém ja passou por isso???

6 Respostas

R

vc tem que escrever dentro da classe a qual pacote elas pertencem

package principal;

public class Classe1{

}
package principal;

public class Classe2{
}

ok?

M

não, não necessáriamente “devo” coloca-las num pacote, é uma boa prática eu concordo mais ai declarando o pacote, devo também criar uma pasta colocar estes arquivos nas pastas… e sem isso dando menos trabalho funciona do mesmo jeito (é só um teste).

de qualquer jeito nos primeiros testes que tinha feito estava dando o mesmo problema e os arquivos estavam em pacotes (além do mais se fosse esse o problema, não resolveria adicionando ao classpath o .)

mais alguém teria alguma resposta?

R

Bom, aqui rodou sem problemas…

rmedeiros@rmedeiros:~/Desktop/a$ javac Primeiro.java
rmedeiros@rmedeiros:~/Desktop/a$ javac Segundo.java
rmedeiros@rmedeiros:~/Desktop/a$ java Primeiro.class

Inclusive, quando eu fiz o javac Primeiro.java ele automaticamente criou o Segundo.class

M

renamed:
Bom, aqui rodou sem problemas…

rmedeiros@rmedeiros:~/Desktop/a$ javac Primeiro.java
rmedeiros@rmedeiros:~/Desktop/a$ javac Segundo.java
rmedeiros@rmedeiros:~/Desktop/a$ java Primeiro.class

Inclusive, quando eu fiz o javac Primeiro.java ele automaticamente criou o Segundo.class

é o que se esperava mesmo, era isso que acontecia nos testes que eu fiz antes de eu instala o java 1.4, (nestes testes eu tava usando notepad e dos, pra não ter problemas com IDE…)

por isso mesmo que colei tudo o que aconteceu no dós, não é o comum acontecer isso… como disse, só de eu adicionar no classpath o .\ funcionou, mais alguma coisa aqui eu devo ter feito aqui que deu esse problema que não deveria. Criei o tópico mais pela curiosidade, do que está acontecendo, ja que para resolver ja resolvi (apesar de não considerar uma forma muito elegante, mais ta resolvido)…

mais assim mesmo agradeço por ter visto o meu problema, mais alguém saberia o que está causando esse problema?

M

Provavelmente um problema de configuração (talvez no JDK?) que deveria adicionar o diretório atual ao classpath automaticamente, mas não faz isso.

M

eu cheguei a pensar que seja alguma coisa do tipo quando deixei essa “solução” pra continua trabalhando… mais não tenho ideia nem de onde eu procuro isso…

de qualquer jeito era só por curiosidade mesmo para “fuçar” nisso… bom, vo dexa isso pra la por enquanto…

assim mesmo obrigado pela dica… :wink:

Criado 5 de janeiro de 2010
Ultima resposta 5 de jan. de 2010
Respostas 6
Participantes 3