Um problema comum que os novos desenvolvedores Java experimentam é que seus programas não são executados com a mensagem de erro: Could not find or load main class ...
O que isso significa, o que causa isso e como você deve consertar isso?
Java <class-name>
Primeiro de tudo, você precisa entender a maneira correta de iniciar um programa usando o comando Java
(ou javaw
).
A sintaxe normal1 é isto:
Java [ <option> ... ] <class-name> [<argument> ...]
onde <option>
é uma opção de linha de comando (começando com um caractere "-"), <class-name>
é um nome de classe Java totalmente qualificado e <argument>
é um argumento de linha de comando arbitrário que é passado para o seu aplicativo.
1 - Existe uma segunda sintaxe para arquivos JAR "executáveis", que descreverei na parte inferior.
O nome totalmente qualificado (FQN) para a classe é convencionalmente escrito como você faria no código-fonte Java; por exemplo.
packagename.packagename2.packagename3.ClassName
No entanto, algumas versões do comando Java
permitem que você use barras ao invés de pontos; por exemplo.
packagename/packagename2/packagename3/ClassName
que (confusamente) se parece com um caminho de arquivo, mas não é um. Note que o termo nome totalmente qualificado é a terminologia padrão de Java ... não é algo que eu acabei de confundir :-)
Aqui está um exemplo de como um comando Java
deve ser:
Java -Xmx100m com.acme.example.ListUsers fred joe bert
O acima vai fazer com que o comando Java
faça o seguinte:
com.acme.example.ListUsers
.main
com signature, return type e modifiers dada por public static void main(String[])
. (Note que o nome do argumento do método éNOTparte da assinatura).String[]
.Quando você receber a mensagem "Não foi possível encontrar ou carregar a classe principal ...", isso significa que a primeira etapa falhou. O comando Java
não conseguiu encontrar a classe. E, de fato, o "..." na mensagem será o nome de classe totalmente qualificado que Java
está procurando.
Então, por que não conseguirá encontrar a turma?
A primeira causa provável é que você tenha fornecido o nome da classe errado. (Ou ... o nome da classe correta, mas na forma errada.) Considerando o exemplo acima, aqui uma variedade de caminhos errados para especificar o nome da classe:
Exemplo # 1 - um nome de classe simples:
Java ListUser
Quando a classe é declarada em um pacote como com.acme.example
, você deve usar o nome completo da classe incluindo o nome do pacote no comando Java
; por exemplo.
Java com.acme.example.ListUser
Exemplo # 2 - um nome de arquivo ou nome de caminho, em vez de um nome de classe:
Java ListUser.class
Java com/acme/example/ListUser.class
Exemplo # 3 - um nome de classe com a caixa incorreta:
Java com.acme.example.listuser
Exemplo # 4 - um erro de digitação
Java com.acme.example.mistuser
Exemplo # 5 - um nome de arquivo de origem
Java ListUser.Java
Exemplo # 6 - você esqueceu completamente o nome da classe
Java lots of arguments
A segunda causa provável é que o nome da classe está correto, mas o comando Java
não pode encontrar a classe. Para entender isso, você precisa entender o conceito do "caminho de classe". Isso é explicado well pela documentação do Oracle:
Java
Então ... se você especificou o nome da classe corretamente, a próxima coisa a verificar é se você especificou o classpath corretamente:
Java
. Verifique se os nomes dos diretórios e os nomes dos arquivos JAR estão corretos.Java
.;
no Windows e :
nos outros. Se você usar o separador errado para a sua plataforma, você não receberá uma mensagem de erro explícita. Em vez disso, você obterá um arquivo ou diretório inexistente no caminho que será silenciosamente ignorado.)Quando você coloca um diretório no caminho de classe, ele corresponde nocionalmente à raiz do espaço de nome qualificado. As classes estão localizadas na estrutura de diretórios abaixo dessa raiz, mapeando o nome totalmente qualificado para um nome de caminho. Por exemplo, se "/ usr/local/acme/classes" estiver no caminho de classe, quando a JVM procurar uma classe chamada com.acme.example.Foon
, ele procurará um arquivo ".class" com este nome de caminho:
/usr/local/acme/classes/com/acme/example/Foon.class
Se você tivesse colocado "/ usr/local/acme/classes/com/acme/example" no caminho de classe, a JVM não conseguiria localizar a classe.
Se suas classes FQN forem com.acme.example.Foon
, a JVM irá procurar por "Foon.class" no diretório "com/acme/example":
Se sua estrutura de diretórios não corresponder à nomenclatura do pacote conforme o padrão acima, a JVM não encontrará sua classe.
Se você tentar renomear uma classe movendo-a, isso irá falhar também ... mas a exceção stacktrace será diferente.
Para dar um exemplo concreto, supondo que:
com.acme.example.Foon
,/usr/local/acme/classes/com/acme/example/Foon.class
,/usr/local/acme/classes/com/acme/example/
,então:
# wrong, FQN is needed
Java Foon
# wrong, there is no `com/acme/example` folder in the current working directory
Java com.acme.example.Foon
# wrong, similar to above
Java -classpath . com.acme.example.Foon
# fine; relative classpath set
Java -classpath ../../.. com.acme.example.Foon
# fine; absolute classpath set
Java -classpath /usr/local/acme/classes com.acme.example.Foon
Notas:
-classpath
pode ser reduzida para -cp
na maioria das versões do Java. Verifique as respectivas entradas manuais para Java
, javac
e assim por diante.O classpath precisa incluir todas as classes other (não-system) das quais seu aplicativo depende. (As classes do sistema são localizadas automaticamente e você raramente precisa se preocupar com isso.) Para que a classe principal seja carregada corretamente, a JVM precisa localizar:
(Nota: as especificações JLS e JVM permitem que algum escopo de uma JVM carregue classes "preguiçosamente" e isso pode afetar quando uma exceção de carregador de classes é lançada.)
Ocasionalmente acontece que alguém coloca um arquivo de código-fonte na pasta errada em sua árvore de código-fonte, ou eles deixam de fora a declaração package
. Se você fizer isso em um IDE, o compilador do IDE informará sobre isso imediatamente. Da mesma forma, se você usar uma ferramenta de compilação Java decente, a ferramenta executará javac
de uma maneira que detectará o problema. No entanto, se você criar seu código Java manualmente, poderá fazê-lo de tal maneira que o compilador não perceba o problema e o arquivo ".class" resultante não esteja no lugar que você espera que ele seja.
Há muitas coisas para verificar, e é fácil perder alguma coisa. Tente adicionar a opção -Xdiag
à linha de comando Java
(como a primeira coisa após Java
). Ele irá mostrar várias coisas sobre o carregamento da classe, e isso pode oferecer pistas sobre qual é o problema real.
Além disso, considere possíveis problemas causados pela cópia e colagem de caracteres invisíveis ou não-ASCII de sites, documentos e assim por diante. E considere "homoglifos", se duas letras ou símbolos parecem iguais ... mas não são.
Java -jar <jar file>
A sintaxe alternativa usada para arquivos JAR "executáveis" é a seguinte:
Java [ <option> ... ] -jar <jar-file-name> [<argument> ...]
por exemplo.
Java -Xmx100m -jar /usr/local/acme-example/listuser.jar fred
Nesse caso, o nome da classe de ponto de entrada (ou seja, com.acme.example.ListUser
) e o caminho de classe são especificados no MANIFESTO do arquivo JAR.
Um Java típico IDE tem suporte para executar aplicativos Java na própria JVM IDE ou em uma JVM filha. Estes são geralmente imunes a esta exceção particular, porque o IDE usa seus próprios mecanismos para construir o classpath de tempo de execução, identificar a classe principal e criar a linha de comando Java
.
No entanto, ainda é possível que essa exceção ocorra, se você fizer as coisas por trás da parte traseira do IDE. Por exemplo, se você configurou anteriormente um Disparador de Aplicativos para seu aplicativo Java no Eclipse e, em seguida, moveu o arquivo JAR contendo a classe "principal" para um local diferente no sistema de arquivos sem informar o Eclipse O Eclipse lançaria a JVM inconscientemente com um caminho de classe incorreto.
Em resumo, se você obtiver esse problema em um IDE, verifique se há coisas como estado obsoleto IDE, referências de projeto quebradas ou configurações de inicialização interrompidas.
Também é possível que um IDE simplesmente fique confuso. Os IDE são extremamente complicados, incluindo muitas partes interativas. Muitas dessas partes adotam várias estratégias de cache para tornar o IDE como um todo responsivo. Às vezes, isso pode dar errado e um possível sintoma é problemas ao iniciar aplicativos. Se você suspeitar que isso possa estar acontecendo, vale a pena reiniciar seu IDE.
Se seu nome de código-fonte for HelloWorld.Java, seu código compilado será HelloWorld.class
.
Você receberá esse erro se o chamar usando:
Java HelloWorld.class
Em vez disso, use isto:
Java HelloWorld
Se suas classes estão em pacotes, você tem que cd
para o diretório principal e executar usando o nome completo da classe (packageName.MainClassName).
Exemplo:
Minhas aulas estão aqui:
D:\project\com\cse\
O nome completo da minha turma principal é:
com.cse.Main
Então eu cd
de volta ao diretório principal:
D:\project
Em seguida, emita o comando Java
:
Java com.cse.Main
Se você definir a classe principal e o método main em uma package
, deverá executá-la sobre o diretório hierárquico, usando o nome completo da classe (packageName.MainClassName
).
Suponha que haja um arquivo de código-fonte (Main.Java):
package com.test;
public class Main {
public static void main(String[] args) {
System.out.println("salam 2nya\n");
}
}
Para executar este código, você deve colocar Main.Class
no pacote como diretório ./com/test/Main.Java
. E no diretório raiz, use Java com.test.Main
.
Quando o mesmo código funciona em um PC, mas mostra o erro em outro, a melhor solução que já encontrei está compilando como o seguinte:
javac HelloWorld.Java
java -cp . HelloWorld
O que me ajudou foi especificar o classpath na linha de comando, por exemplo:
Crie uma nova pasta, C:\temp
Crie o arquivo Temp.Java em C:\temp
, com a seguinte classe:
public class Temp {
public static void main(String args[]) {
System.out.println(args[0]);
}
}
Abra uma linha de comando na pasta C:\temp
e escreva o seguinte comando para compilar a classe Temp:
javac Temp.Java
Execute a classe Java compilada, adicionando a opção -classpath
para permitir que o JRE saiba onde encontrar a classe:
Java -classpath C:\temp Temp Hello!
De acordo com a mensagem de erro ("Não foi possível localizar ou carregar a classe principal"), há duas categorias de problemas:
A classe principal não pode ser found quando há erro de digitação ou sintaxe incorreta no nome completo da classe ou não existe no caminho de classe fornecido .
A classe principal não pode ser carregada quando a classe não pode ser iniciada , normalmente a classe principal estende outra classe e essa classe não existe no caminho de classe fornecido.
Por exemplo:
public class YourMain extends org.Apache.camel.spring.Main
Se a mola de camelo não estiver incluída, este erro será reportado.
Às vezes o que pode estar causando o problema não tem nada a ver com a classe principal, e eu tive que descobrir isso da maneira mais difícil. Foi uma biblioteca referenciada que eu mudei e me deu o seguinte:
Não foi possível encontrar ou carregar a classe principal xxx Linux
Acabei de excluir essa referência, adicionei novamente e funcionou bem novamente.
Eu tive um erro nesse caso:
Java -cp lib.jar com.mypackage.Main
Funciona com ;
para Windows e :
para Unix:
Java -cp lib.jar; com.mypackage.Main
Tente -Xdiag .
A resposta de Steve C cobre os casos possíveis, mas às vezes para determinar se a classe não pode ser foundou loaded pode não ser tão fácil. Use Java -Xdiag
(desde o JDK 7). Isto imprime um stacktrace Nice que fornece uma sugestão para o que significa a mensagem Could not find or load main class
.
Por exemplo, ele pode apontar para outras classes usadas pela classe principal que não puderam ser encontradas e impediram que a classe principal fosse carregada.
Use este comando:
Java -cp . [PACKAGE.]CLASSNAME
Exemplo: Se o seu nome de classe for Hello.class criado a partir de Hello.Java, use o comando abaixo:
Java -cp . Hello
Se o seu arquivo Hello.Java estiver dentro do pacote com.demo, use o comando abaixo
Java -cp . com.demo.Hello
Com o JDK 8 muitas vezes acontece que o arquivo de classe está presente na mesma pasta, mas o comando Java
espera o classpath e por esta razão nós adicionamos-cp .
para pegar a pasta atual como referência para o classpath.
Neste caso você tem:
Não foi possível encontrar ou carregar a classe principal? Classpath
É porque você está usando "-classpath", mas o traço não é o mesmo traço usado por Java
no comando Prompt. Eu tive esse problema copiando e colando de Notepad para cmd.
No meu caso, o erro apareceu porque eu tinha fornecido o nome do arquivo de origem em vez do nome da classe.
Precisamos fornecer o nome da classe contendo o método main ao interpretador.
Passei um bom tempo tentando resolver esse problema. Eu pensei que eu estava de alguma forma definindo meu classpath incorretamente, mas o problema foi que eu digitei:
Java -cp C:/Java/MyClasses C:/Java/MyClasses/utilities/myapp/Cool
ao invés de:
Java -cp C:/Java/MyClasses utilities/myapp/Cool
Eu pensei que o significado de totalmente qualificado significava incluir o nome do caminho completo em vez do nome completo do pacote.
Isso pode ajudá-lo se o seu caso é especificamente como o meu: como um iniciante eu também corri para este problema quando tentei executar um programa em Java.
Eu compilei assim:
javac HelloWorld.Java
E eu tentei rodar também com a mesma extensão:
Java Helloworld.Java
Quando eu removi o .Java
e reescrevi o comando como Java HelloWorld
, o programa rodou perfeitamente. :)
O que resolveu o problema no meu caso foi:
Clique com o botão direito do mouse no projeto/classe que você deseja executar e, em seguida, Run As
-> Run Configurations
. Em seguida, você deve corrigir sua configuração existente ou adicionar novos da seguinte maneira:
abra a aba Classpath
, clique no botão Advanced...
e adicionebin
folder do seu projeto.
Todas as respostas aqui são direcionadas para usuários do Windows. Para Mac, o separador do caminho de classe é :
, não ;
. Como um erro ao definir o caminho de classe usando ;
não é lançado, isso pode ser difícil de descobrir se vier do Windows para o Mac.
Aqui está o comando Mac correspondente:
Java -classpath ".:./lib/*" com.test.MyClass
Onde neste exemplo o pacote é com.test
e uma pasta lib
também deve ser incluída no classpath.
Primeiro defina o caminho usando este comando;
set path="paste the set path address"
Então você precisa carregar o programa. Digite "cd (nome da pasta)" na unidade armazenada e compile-a. Por exemplo, se o meu programa armazenado na unidade D, digite "D:" pressione enter e digite "cd (nome da pasta)".
Se você usar Maven para construir o arquivo JAR, por favor, certifique-se de especificar a classe principal no arquivo pom.xml:
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>class name us.com.test.abc.MyMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
No Windows, coloque .;
no valor CLASSPATH no começo.
O . (ponto) significa "procurar no diretório atual". Esta é uma solução permanente.
Além disso, você pode definir "uma vez" com set CLASSPATH=%CLASSPATH%;.
. Isso durará enquanto sua janela cmd estiver aberta.
Eu tive o mesmo problema e finalmente encontrei o meu erro :) Eu usei este comando para compilar e funcionou corretamente.
javac -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode.Java
mas este comando não funcionou para mim (não foi possível encontrar ou carregar qrcode da classe principal)
Java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode
Por fim, acabei de adicionar o caractere ':' no final do caminho de classe e o problema foi resolvido.
Java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar:" qrcode
)
Este é um caso específico, mas desde que cheguei a esta página procurando uma solução e não a encontrei, adicionarei aqui.
O Windows (testado com 7) não aceita caracteres especiais (como á
) em classes e nomes de pacotes. Linux faz, no entanto.
Descobri isso quando construí um .jar
no NetBeans e tentei executá-lo na linha de comando. Ele foi executado no NetBeans, mas não na linha de comando.
Você realmente precisa fazer isso da pasta src
. Lá você digita a seguinte linha de comando:
[name of the package].[Class Name] [arguments]
Digamos que sua classe se chame CommandLine.class
, e o código se parece com isto:
package com.tutorialspoint.Java;
/**
* Created by mda21185 on 15-6-2016.
*/
public class CommandLine {
public static void main(String args[]){
for(int i=0; i<args.length; i++){
System.out.println("args[" + i + "]: " + args[i]);
}
}
}
Então você deve cd
para a pasta src e o comando que você precisa para executar ficaria assim:
Java com.tutorialspoint.Java.CommandLine this is a command line 200 -100
E a saída na linha de comando seria:
args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100
Às vezes, em alguns compiladores on-line que você pode ter tentado, você obterá este erro se não escrever public class [Classname]
, mas apenas class [Classname]
.
Ao executar a Java
com a opção -cp
, conforme anunciado no Windows PowerShell, você pode receber um erro semelhante a:
The term `ClassName` is not recognized as the name of a cmdlet, function, script ...
Para que o PowerShell aceite o comando, os argumentos da opção -cp
devem estar contidos entre aspas, como em:
Java -cp 'someDependency.jar;.' ClassName
Formar o comando dessa maneira deve permitir que Java processe os argumentos do caminho de classe corretamente.
Também enfrentei erros semelhantes ao testar uma conexão JDBC do Java MongoDB. Eu acho que é bom resumir minha solução final em suma, para que no futuro qualquer um possa olhar diretamente para os dois comandos e seja bom prosseguir.
Suponha que você esteja no diretório em que seu arquivo Java e dependências externas (arquivos JAR) existem.
compilar:
javac -cp mongo-Java-driver-3.4.1.jar JavaMongoDBConnection.Java
Corre:
Java -cp mongo-Java-driver-3.4.1.jar: JavaMongoDBConnection
Certo, muitas respostas já, mas ninguém mencionou o caso em que a permissão de arquivo pode ser o culpado. Ao executar o usuário não tem acesso ao arquivo jar ou a um dos diretórios do caminho. Por exemplo, considere:
Arquivo Jar em /dir1/dir2/dir3/myjar.jar
User1 whow possui o jar pode fazer:
# Running as User1
cd /dir1/dir2/dir3/
chmod +r myjar.jar
Mas ainda não funciona:
# Running as User2
Java -cp "/dir1/dir2/dir3:/dir1/dir2/javalibs" MyProgram
Error: Could not find or load main class MyProgram
Isso ocorre porque o usuário em execução (User2) não tem acesso a dir1, dir2 ou javalibs ou dir3. Isso pode deixar alguém maluco quando o User1 pode ver os arquivos e pode acessá-los, mas o erro ainda acontece para o User2
No meu caso, recebi o erro porque misturei nomes de pacotes UPPER e minúsculos em um sistema Windows 7. Alterar os nomes dos pacotes para todas as minúsculas resolveu o problema. Observe também que nesse cenário, não recebi nenhum erro ao compilar o arquivo .Java em um arquivo .class; ele simplesmente não funcionaria do mesmo diretório (sub-sub-sub-sub).
Em Java, quando você às vezes executa a JVM a partir da linha de comando usando o executável Java e está tentando iniciar um programa a partir de um arquivo de classe com public static void main (PSVM), você pode executar o erro abaixo mesmo que o parâmetro classpath a JVM é precisa e o arquivo de classe está presente no caminho de classe:
Error: main class not found or loaded
Isso acontece se o arquivo de classe com o PSVM não puder ser carregado. Uma possível razão para isso é que a classe pode estar implementando uma interface ou estendendo outra classe que não esteja no caminho de classe. Normalmente, se uma classe não estiver no caminho de classe, o erro lançado indica como tal. Mas, se a classe em uso for estendida ou implementada, o Java não poderá carregar a própria classe.
Referência: https://www.computingnotes.net/Java/error-main-class-not-found-or-loaded/
Não consegui resolver este problema com as soluções aqui apresentadas (embora a resposta indicada tenha, sem dúvida, resolvido os meus conceitos). Eu enfrentei esse problema duas vezes e cada vez tentei soluções diferentes (no IDE do Eclipse).
main
em diferentes classes do meu projeto. Então, eu tinha deletado o método main
das classes subseqüentes.Eu tive uma estranha.
Erro: Não foi possível encontrar ou carregar a classe principal mypackage.App
Descobri que eu tinha uma configuração pom (pai) no pom.xml do meu projeto (o pom.xml do meu projeto estava apontando para um pom.xml pai) e o relativePath estava off/errado.
Abaixo está uma parte do pom.xml do meu projeto
<parent>
<groupId>myGroupId</groupId>
<artifactId>pom-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../badPathHere/pom.xml</relativePath>
</parent>
Depois que resolvi o pom relativePath, o erro desapareceu.
Vai saber.
Eu recebi este erro depois de fazer mvn Eclipse:eclipse
Isso estragou um pouco o meu arquivo .classpath
.
Tive que mudar as linhas em .classpath
de
<classpathentry kind="src" path="src/main/Java" including="**/*.Java"/>
<classpathentry kind="src" path="src/main/resources" excluding="**/*.Java"/>
para
<classpathentry kind="src" path="src/main/Java" output="target/classes" />
<classpathentry kind="src" path="src/main/resources" excluding="**" output="target/classes" />
Às vezes, é melhor remover os arquivos JAR adicionados e adicioná-los novamente com as devidas ajudas de compilação. Para mim, tem sido um problema regular e eu segui a mesma abordagem:
No contexto do IDE desenvolvimento (Eclipse, NetBeans ou qualquer outro) você precisa configurar suas propriedades de projeto para ter uma classe principal, para que seu IDE saiba onde a classe principal está localizada ser executado quando você apertar "Play".
Por padrão, o Java usa .
, o diretório de trabalho atual, como o padrão CLASSPATH
. O que isto significa é que quando você digita um comando no prompt, por exemplo Java MyClass
, o comando é interpretado como se você tivesse o tipo Java -cp . MyClass
. Você viu esse ponto entre -cp
e MyClass
? ( cp é curto para o mais longo classpath opção)
Isso é suficiente para a maioria dos casos e as coisas parecem funcionar muito bem até que em algum momento você tente adicionar um diretório à sua CLASSPATH
. Na maioria dos casos, quando os programadores precisam fazer isso, eles simplesmente executam um comando como set CLASSPATH=path\to\some\dir
. Esse comando cria uma nova variável de ambiente chamada CLASSPATH
com o valor path\to\some\dir
ou substitui seu valor por path\to\some\dir
se CLASSPATH
já foi definido antes.
Quando isso é feito, agora você tem uma variável de ambiente CLASSPATH
e o Java não usa mais seu classpath padrão (.
), mas aquele que você definiu. Então, no dia seguinte, você abre seu editor, escreve algum programa Java, cd
no diretório onde você o salvou, compila e tenta executá-lo com o comando Java MyClass
, e você é recebido com uma boa saída: Não foi possível encontrar ou carregar a classe principal ... (Se os seus comandos estavam funcionando bem antes e agora você está obtendo essa saída, esse pode ser o caso para você).
O que acontece é que quando você executa o comando Java MyClass
, o Java procura pelo arquivo de classe chamado MyClass
no diretório ou diretórios que você definiu em sua CLASSPATH
e não em seu diretório de trabalho atual para que ele não encontre seu arquivo de classe e, portanto, .
O que você precisa fazer é adicionar .
ao seu caminho de classe novamente, o que pode ser feito com o comando set CLASSPATH=%CLASSPATH%;.
(observe o ponto após o ponto-e-vírgula). Em inglês simples, esse comando diz "Escolha o que foi inicialmente o valor de CLASSPATH
(%CLASSPATH%
), adicione .
a ele (;.
) e atribua o resultado de volta a CLASSPATH
".
E voila , você pode mais uma vez usar seu comando Java MyClass
como de costume.