Variáveis de ambiente ou classe não é encontrada

Olá pessoal. Eu já desenvolvo um sistema e eu estava programando em java 4, agora estou mudando para o 8.
Pois bem, formatei meu micro antes e configurei as variáveis de ambiente, baixei o java 8, o meu sistema até que roda por mais curioso que seja, mas quando eu crio uma outra pasta como por exemplo pastateste e crio uma classe simples como por exemplo “Olá mundo”
o java me dá o seguinte erro.
Erro: Não foi possível localizar nem carregar a classe principal DisplayQueryResults.
Que é inclusive um programinha adaptado que eu peguei do livro do deitel (mas isso não importa)
minha versão do java é jdk1.8.0_211
c:\jdk1.8.0_211. E esse é o local
Variáveis de ambiente
JAVA_HOME: C:\jdk1.8.0_211
CLASSPATH: .;C:;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\htmlconverter.jar;%JAVA_HOME%\jre\lib;%JAVA_HOME%\jre\lib\rt.jar
PATH: %JAVA_HOME%\bin;%PATH%;.

Alguém por gentileza poderia me dizer o que está errado???
grato
Fábio

A classe possuí um package?
Tipo assim:

package br.com.skygod;

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello, World!");
	}
}

Nesse caso eu teria que estar no diretório raiz, que seria o diretório anterior a br e usar o
fully qualified name da classe.

Não funciona porquê não estou no diretório raiz, que seria o java-test.
:~/Dekstop/java-test/br/com/skygod$ java HelloWorld

Já esse funciona:
:~/Dekstop/java-test$ java br.com.skygod.HelloWorld

No exemplo usei em um sistema linux, mas seria o mesmo no Windows.
Caso não funciona da um feedback ai.

Não se seta uma variável de ambiente para o CLASSPATH, isso era feito lá no Java 1.2.
O CLASSPATH é configurado por aplicação.

Posta o seu código fonte.
Como está fazendo para compilar?
Como está fazendo para executar?

Ok. eu criei um código bem simples. Criei um diretório chamado “br” então ficou c:\br e dentro eu fiz uma classe chamada “Algo”. antes de mais nada:

C:\br>java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
C:\br>javac -version
javac 1.8.0_211
C:\br>dir
 O volume na unidade C não tem nome.
 O Número de Série do Volume é 1A12-C6B6

 Pasta de C:\br

16/08/2020  14:18    <DIR>          .
16/08/2020  14:18    <DIR>          ..
16/08/2020  14:18               401 Algo.class
16/08/2020  14:18               501 Algo.java
               2 arquivo(s)            902 bytes
               2 pasta(s)   144.795.455.488 bytes disponíveis

Pois bem eu dei um java -version e tudo bem e um javac -version e tudo bem e um dir e como vcs podem ver existe a classe Algo.java e a Classe Algo.class
eis agora o código de Algo.java

package br;

//melhor importar tudo para garantir
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.sql.*;
import java.lang.reflect.*;
import java.lang.*;
import java.io.*;
import cedruslibani.cad.*;
import cedruslibani.cons.*;

public class Algo extends JFrame {
	
	public Algo() {
		super("Algo");
		setSize(500, 250);
		setVisible(true);
	}
	
	public static void main(String args[]) {
		Algo algo = new Algo();
	}
}

e o erro misterioso

C:\br>java Algo
Erro: Não foi possível localizar nem carregar a classe principal Algo

Eu não sei vcs, mas sabe quando vc está programando e seu código já tem milhares de linhas e dá um erro? nesse caso agente sabe que fez algo de errado. Mas esse erro que está dando é o tipo de erro que irrita.
Bom eu formatei esse micro recentemente, essa é uma outra informação que pode ajudar
Se alguém puder me ajudar agradeço.
grato
Fábio.

Vai para C:\ e digita:

C:\> java br.Algo

E me diz se funcionou.

Saia da pasta br, ela é a raíz do seu pacote em seguida faça:

java -cp . br.Algo

Bom dia!
Bom fiz os testes e fiquei intrigado com alguma ou outra coisa, que acho que pode ser útil até mesmo para a comunidade.
primeiro: se eu executo dentro da pasta c:\br java br.Algo, ele funciona.
segundo:se eu vou na raiz c:\ e executo java br.Algo ele funciona também
terceiro: se na primeira linha de código eu retiro o comando package br; e executo java Algo
dentro da pasta br ele funciona tb. Fora dessa pasta não funciona.
Até aí tudo bem, mas eu fui mais curioso: No código Algo fiz o seguinte:
package br;
import java.awt.;
import javax.swing.
;
import java.awt.event.;
import java.util.
;
import java.sql.;
import java.lang.reflect.
;
import java.lang.;
import java.io.
;
import cedruslibani.cad.;
import cedruslibani.cons.
;
import br.*;

public class Algo extends JFrame {

public Algo(){
super(“Algo”);
Container c = getContentPane();
c.setLayout(new BorderLayout());
JButton b1 = new JButton(“Botão”);
b1.addActionListener(new Acao());
c.add(b1, BorderLayout.CENTER);

setSize(500, 250);

setVisible(true);
}
private class Acao implements ActionListener{
public void actionPerformed(ActionEvent e){
Algo2 algo2 = new Algo2();
}
}

public static void main (String args[]){

Algo algo = new Algo();

}
}

e o código de Algo2 é o seguinte:
package br;
import java.awt.;
import javax.swing.
;
import java.awt.event.;
import java.util.
;
import java.sql.;
import java.lang.reflect.
;
import java.lang.;
import java.io.
;
import cedruslibani.cad.;
import cedruslibani.cons.
;

public class Algo2 extends JFrame {

public Algo2(){
super(“Algo2”);
Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add(new JButton(“Botão2”), BorderLayout.CENTER);

setSize(500, 250);

setVisible(true);
}
}
Voltando lá atrás quando eu executo java br.Algo em qualquer lugar tudo funciona. Mas o que me deixou intrigado é que desta vez se eu tiro package br; de Algo e digito javac Algo.java ele dá aquele erro com cara de que está faltando alguma coisa no CLASSPATH
e o erro é o seguinte:
C:\br>javac Algo.java
Algo.java:29: error: cannot access Algo2
Algo2 algo2 = new Algo2();
^
bad class file: .\Algo2.class
class file contains wrong class: br.Algo2
Please remove or make sure it appears in the correct subdirectory of the classpath.
1 error

Aqui o “X” da questão é essa linha bad class file: .\Algo2.class

Não tá com cara de que tem algo sei lá errado em alguma variável de ambiente. Ou sei lá talvez eu esteja totalmente por fora, não sei. Se alguém tiver a curiosidade nem precisa criar o código é só copiar o código aqui mesmo e testar na máquina de vcs. O fato é que eu nunca consigo sómente digitar de qualquer jeito java Algo (tendo que instanciar Algo2 dentro de Algo é claro).
grato.
Fábio.

É que você tirou a classe Algo do pacote br, mas a classe Algo2 continua dentro do pacote br.
Então na classe Algo você tem que fazer o import da classe br.Algo2.

O nome do pacote faz parte do nome da classe, é normal confundir pois para o sistema operacional ele é uma mera pasta, mas para o Java não.

Quando as classes estão dentro de um mesmo pacote, elas se “enxergam” mas quando estão em pacotes diferentes, tem que fazer o import de quem está em outro pacote.

Se você está criando o pacote br dentro do C: então a raíz do classpath de sua aplicação é o C: e você deve compilar a partir dele, a pasta br e suas subpastas, são simplesmente o pacote contendo classes.

Eu recomendo você criar uma pasta específica pra cada programa que for desenvolver e dentro dessa pasta você organiza seus pacotes.

Por exemplo cria uma pasta C:\MeuPrograma e dentro do MeuPrograma você cria suas classes e pacotes.
Na hora de compilar, você acessa a pasta C:\MeuPrograma e compila a partir dele.
Futuramente, quando você usar alguma IDE, isso vai ficar mais óbvio, pois elas criam uma pasta chamada de projeto e daí os fontes ficam dentro do projeto.

Agradeço, Muito obrigado pela ajuda. Problema resolvido.
Grato.
Fábio.