Компиляция и запуск приложения Java - PullRequest
1 голос
/ 08 июня 2011

Проблема:

Я не могу запустить приложение Java после компиляции. Я думаю, что что-то не так, мои классовые пути.

Просто чтобы прояснить ситуацию, я использовал IDE, Eclipse, и первоначально я использовал это для компиляции и запуска своего приложения. Он работал отлично, но теперь мне нужно запустить его строго через терминал / командную строку. Причина в том, что я следую указаниям: если он не может быть запущен из командной строки, он не существует. (Помогает мне действительно узнать мои приложения)

В любом случае, вот среда

OS

32-битный дистрибутив Linux AWS (на базе CentOS)

Установленные программы

  • ням установить Subversion *
  • yum install java *

Структура приложения

  • персонал / SRC / COM / staffS3 / Помощники / Constants.java
  • персонал / ЦСИ / сеть / UploadFile.java

* 1038 путь к классам *

  • export CLASSPATH = "/ home / ec2-user / staff / lib / aws-java-sdk-1.2.1.jar:."
  • export JAVA_HOME = "/ usr / lib / jvm / jre /"

Компиляция

javac /home/ec2-user/staff/src/com/staffS3/Helpers/Constants.java /home/ec2-user/staff/src/net/UploadFile.java

Компилируется правильно (Atleast без ошибок)

Для запуска

java UploadFile

Error

    Exception in thread "main" java.lang.NoClassDefFoundError: UploadFile (wrong name: net/UploadFile)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
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: UploadFile. Program will exit.

Занимался этим некоторое время. Надеюсь, кто-то заметит ту маленькую (или огромную) вещь, по которой я скучаю:).

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 08 июня 2011

Для запуска

java UploadFile

Вы не должны cd в каталог src/net. Просто зайдите на src и наберите

java net.UploadFile

Вам необходимо находиться в каталоге, так чтобы java мог найти файл net/UploadFile.class.

Сообщение об ошибке "Неверное имя " (и его причина) хорошо описано здесь .


Обратите внимание, что установка classpath с помощью -cp является предпочтительным способом. То есть попробуйте

java -cp .:/home/ec2-user/staff/lib/aws-java-sdk-1.2.1.jar net.UploadFile

Наконец, смешивать файлы .java и .class - плохая идея. Используйте переключатель -d при запуске javac, чтобы указать каталог назначения для файлов классов. Позвоните в справочник bin или build.

2 голосов
/ 08 июня 2011

По сути, похоже, что вы пытаетесь запустить его, используя базовое имя, не включая пакет.

Попробуйте запустить его из папки "src" и запустить java net.UploadFile

...