[Resolvido] Executar código java no terminal

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.

Imagem do erro: http://postimage.org/image/pl4gzxaa7/

Obrigado desde já.

Obs: Eu sou iniciante em java, por esse motivo não gostaria de usar nenhuma IDE.

Tem ctz que esta no diretório correto? Ele nao esta encontrando o seu .java

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.

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.

java -classpath /home/alan/Programas/Java/ OlaMundo

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”?

[quote=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”?
[/quote]

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

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.

:slight_smile:

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.