Problema com Compilação no Fedora

Quando eu compilo um programa com apenas uma classe simples, o javac compila certinho.
Mas o problema é quando eu tenho dois arquivos .java um com a main e usando a classe do outro arquivo.java, ele diz que a classe a qual eu estou tentando usar do outro arquivo não existe ou coisa assim, já fiz um monte de coisas pra tentar resolver mas não consegui, pior que eu não estou conseguindo estudat java por conta disso.:frowning:

Um exemplo:

class NovaClasse { NovaClasse() { System.out.println("Chamou o construtor!"); } }

class ExeNovaClasse { public static void main(String args[]) { NovaClasse end; end = new NovaClasse(); } }

O ExeNovaClasse.java não compila de jeito nenhum, olhem o erro:

[b][douglastc@localhost Douglas_Java]$ javac NovaClasse.java
[douglastc@localhost Douglas_Java]$ javac ExeNovaClasse.java

  1. ERROR in ExeNovaClasse.java (at line 5)
    NovaClasse end;
    ^^^^^^^^^^
    NovaClasse cannot be resolved to a type

  1. ERROR in ExeNovaClasse.java (at line 6)
    end = new NovaClasse();
    ^^^^^^^^^^
    NovaClasse cannot be resolved to a type

2 problems (2 errors)[douglastc@localhost Douglas_Java]$ [/b]

Assim fica isso em todos os arquivos desse tipo.
Alguém sabe o que está acontecendo?

Digita “javac -version” e manda pra cá.

As duas classes estao no mesmo pacote? se nao estiverem no mesmo pacote, entao vc nao poderá enxergar a classe NovaClasse, pois ela não é public. Além disso, vc deve informar no classpath onde está a classe NovaClasse.

Eis o que vc pode tentar fazer para compilar:

//trocar a declaração
class NovaClasse { ... } 
//por 
public class NovaClasse { ... }

informar o classpath ao tentar compilar a classe ExeNovaClasse:

javac NovaClasse.java
javac -classpath caminho\para\classnova ExeNovaClasse.java

[quote=flavio_regis]Digita “javac -version” e manda pra cá.

[/quote]

[douglastc@localhost UCDB]$ javac -version
Eclipse Java Compiler v_686_R32x, 3.2.2 release, Copyright IBM Corp 2000, 2006. All rights reserved.

[quote=RafaelVS]As duas classes estao no mesmo pacote? se nao estiverem no mesmo pacote, entao vc nao poderá enxergar a classe NovaClasse, pois ela não é public. Além disso, vc deve informar no classpath onde está a classe NovaClasse.

Eis o que vc pode tentar fazer para compilar:

//trocar a declaração
class NovaClasse { ... } 
//por 
public class NovaClasse { ... }

informar o classpath ao tentar compilar a classe ExeNovaClasse:

javac NovaClasse.java
javac -classpath caminho\para\classnova ExeNovaClasse.java[/quote]

Tb faltou o import.
O erro está na visibilidade mesmo, e não na versão do java. (eu axo).

flw.

[quote=maul][quote=RafaelVS]As duas classes estao no mesmo pacote? se nao estiverem no mesmo pacote, entao vc nao poderá enxergar a classe NovaClasse, pois ela não é public. Além disso, vc deve informar no classpath onde está a classe NovaClasse.

Eis o que vc pode tentar fazer para compilar:

//trocar a declaração
class NovaClasse { ... } 
//por 
public class NovaClasse { ... }

informar o classpath ao tentar compilar a classe ExeNovaClasse:

javac NovaClasse.java
javac -classpath caminho\para\classnova ExeNovaClasse.java[/quote]

Tb faltou o import.
O erro está na visibilidade mesmo, e não na versão do java. (eu axo).

flw.
[/quote]

Na faculdade eu fiz assim e ele compila e executa certinho, o problema está aqui em casa, só não sei qual é.

Esse meu javac não está estranho essa versão dele?

Informe o classpath durante a complilação…

entre no mesmo diretório onde está gravada a sua classe e digite o seguinte comando:

javac -classpath . *.java

Com isso, você vai compilar todos os seus arquivos fontes de uma vez só.

:wink:

Faz o seguinte.
Verifica se ele está criando os .class no diretório correto.
Se estiver…

echo $CLASSPATH

Se não tiver um ‘.’ no teu CLASSPATH, vc vai precisar adicionar.

flw.

[quote=bernardo.rafael]Informe o classpath durante a complilação…

entre no mesmo diretório onde está gravada a sua classe e digite o seguinte comando:

javac -classpath . *.java

Com isso, você vai compilar todos os seus arquivos fontes de uma vez só.

:wink: [/quote]

Fazendo isso vc vai ter q usar a opção -classpath quase sempre que for compilar ou executar algo.
Se vc atualizar o seu CLASSPATH, vai fazer uma só vez que vai ser valida para todas as outras.

flw.

[quote=maul]Faz o seguinte.
Verifica se ele está criando os .class no diretório correto.
Se estiver…

echo $CLASSPATH

Se não tiver um ‘.’ no teu CLASSPATH, vc vai precisar adicionar.

flw.[/quote]

Ele tá criando no mesmo diretório os que compilam.
Não entendi como que eu uso esse comando, como que eu faço?

alguém?