Boa noite, eu estou tentando compilar e executar meus códigos java pelo terminal do Ubuntu, mas me deparo com o seguinte erro:
javac: file not found: /home/alan/Java/OlaMundo.java
Usage: javac <options> <source files>
use -help for a list of possible options
Exception in thread "main" java.lang.NoClassDefFoundError: /home/alan/Java/OlaMundo
Caused by: java.lang.ClassNotFoundException: .home.alan.Java.OlaMundo
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: /home/alan/Java/OlaMundo. Program will exit.
Tem ctz que esta no diretório correto? Ele nao esta encontrando o seu .java
Starkk
gustavocoolt obrigado pelo comentário, você tem razão, eu estava organizando os meus documentos e acabei trocando de pasta. Esse logo abaixo é o erro que realmente aparece:
Exception in thread "main" java.lang.NoClassDefFoundError: /home/alan/Programas/Java/OlaMundo
Caused by: java.lang.ClassNotFoundException: .home.alan.Programas.Java.OlaMundo
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: /home/alan/Programas/Java/OlaMundo. Program will exit.
root@Alan-PC:/home/alan#
Ele gera o arquivo .class, mas não executa.
pmlm
Não podes indicar assim todo o caminho para a tua classe. Apenas podes ter package.Classe. A directoria tem de estar definida no parametro classpath.
pmlm, muito obrigado, consegui executar o programa.
Deixa eu ver se entendi corretamente, eu só posso usar o comando “java nomeDaClasse” se eu estiver no diretório em que a classe foi gerada? Caso não esteja eu uso um cd para ir para la ou uso “java -classpath diretorio/nomeDaClasse”?
Gleidson_Henrique
Starkk:
pmlm, muito obrigado, consegui executar o programa.
Deixa eu ver se entendi corretamente, eu só posso usar o comando “java nomeDaClasse” se eu estiver no diretório em que a classe foi gerada? Caso não esteja eu uso um cd para ir para la ou uso “java -classpath diretorio/nomeDaClasse”?
Nao, na verdade vc usa da onde voce quiser, mas o caminho ate voce chegar la voce define no parametro classpath, igualzinho como ele utilizou.
Por isso é mais facil voce ir ate o diretorio com o cd… rsrs
Abraços
leandropena
Uma dica importante: sempre que seu programa laçar algum tipo de excessão, o stacktrace será um forte aliado na hora de saber o “porque” do problema.
Starkk
Gleidson Henrique, obrigado pela ajuda. Consegui entender agora =)
leandropena, obrigado pela dica. Eu dei uma olhada e não entendi muito bem pelo fato de ser iniciante ainda. Mas vou dar uma olhada nessa classe um pouco melhor depois.
Obrigado a todos por me ajudarem a solucionar meu problema.