Java classpath não importa classe

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:

c:\classes
class Lib1{
int l = 23;
}

c:\programas\pacote
public class UsandoPath{
public static void main(String… args){
Lib1 lib1 = new Lib1();
System.out.println(lib1.l);
}
}

Funciona:

c:\classes
class Lib1{
int l = 23;
}

c:\programas\pacote
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:

c:\classes
class Lib1{
int l = 23;
}

c:\programas\pacote
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:

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.

1 curtida

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