Java classpath não importa classe

2 respostas Resolvido
programaçãojava
E

Pessoal estou iniciando no mundo da programação java e estou com uma grande dúvida, quando uso o comando -classpath com pacote não consigo usar a classe definida no classpath, quando não uso pacote compila com sucesso.
Ex:

Funciona:

<strong>c:\classes</strong>

class Lib1{

int l = 23;

}
<strong>c:\programas\pacote</strong>

public class UsandoPath{

public static void main(String args){

Lib1 lib1 = new Lib1();

System.out.println(lib1.l);

}

}

Funciona:

<strong>c:\classes</strong>

class Lib1{

int l = 23;

}
<strong>c:\programas\pacote</strong>

package pacote;

public class UsandoPath{

public static void main(String args){

//	Lib1 lib1 = new Lib1();

//		System.out.println(lib1.l);

}

}

Não funciona
Aqui está o erro, quando eu uso pacote e tento rodar a classe do arquivo .jar ele simplesmente não funciona:

<strong>c:\classes</strong>

class Lib1{

int l = 23;

}
<strong>c:\programas\pacote</strong>

package pacote;

public class UsandoPath{

public static void main(String args){

Lib1 lib1 = new Lib1();

System.out.println(lib1.l);

}

}

Alguém sabe me explicar o que está ocorrendo? :sweat:
Segue print, respectivamente, do que está ocorrendo:

2 Respostas

staroski
Solucao aceita

Sua classe Lib1 não é pública e está no pacote default.

Por isso quando você coloca sua classe UsandoPath dentro de um pacote e tenta acessar a classe Lib1, acontece erro de compilação.
Como a classe não é pública, ela só é visível para as classes do mesmo pacote em que foi declarada.
Por isso quando você deixa sua classe UsandoPath no pacote default, aí compila.

Além de mudar a classe Lib1 para public você também terá que declará-la dentro de um pacote, pois você não consegue importar classes do pacote default em classes que estão em outros pacotes.

E

Perfeito…Isso realmente funcionou. Muito obrigado mesmo. Perdi bastante tempo com essa dúvida. Valeu.

Criado 26 de setembro de 2017
Ultima resposta 27 de set. de 2017
Respostas 2
Participantes 2