Как запустить примеры API (который уже имеет рабочее пространство) с использованием eclipse IDE - PullRequest
0 голосов
/ 19 января 2011

Я новичок в Java и не уверен, насколько подходящим является название моего вопроса.Пожалуйста, предложите какой-нибудь лучший заголовок.

У меня есть Java API, который имеет много исполняемых модулей, которые выполняют различные операции, связанные с синтаксическим анализом файлов .pst в MS Outlook.И моя проблема в том, что я получаю это исключение, когда запускаю команду execute для выполнения файла .class одного модуля API (java -classpath /opt/Java/libs/JPST/lib/jpst.jar /opt/Java/libs/JPST/examples/GetInboxMessages/bin/Example) -

Exception in thread "main" java.lang.NoClassDefFoundError: /opt/Java/libs/JPST/examples/GetInboxMessages/bin/Example
Caused by: java.lang.ClassNotFoundException: .opt.Java.libs.JPST.examples.GetInboxMessages.bin.Example

        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: /opt/Java/libs/JPST/examples/GetInboxMessages/bin/Example.  Program will exit.

Такдалеко ...
Вы можете проверить мой предыдущий вопрос , где я пришел к выводу, что я правильно выполняю команды compile и execute.Но я все еще получаю вышеупомянутое «исключение».

Я спросил разработчика API, который сказал, что я должен получить Eclipse или Netbeans IDE.Он сказал, что папка

examples внутри структуры папок API - это целое рабочее пространство Eclipse.

, а также сказал, что

Itпроще скомпилировать и запустить все примеры.

А теперь ...
Итак, я настроил Eclipse Helios для Java.Может кто-нибудь сказать мне, как легко скомпилировать и запустить все примеры (я думаю, модули внутри папки примеров), используя IDE.Ранее я работал с Eclipse для PHP, но никогда для Java.

Структура папок API
Мне нужно выполнить файл .class одного из этих модулей (много модулейвнутри примеров присутствуют папки directory).В папке примеров API есть много таких модулей.Каждая из этих папок модулей содержит папку bin (содержащую файл .class) и папку src (содержащую файл .java).Мне нужно выполнить один такой .class файл.

Существует каталог lib, содержащий файл .jar (на который должен ссылаться мой целевой файл .class).Каталог lib находится на том же уровне, что и каталог examples.

Решение
Я убедился, что решение Джонатана работает (проверено только без использования elipse).Чтобы сделать это более понятным, classpath необходимо включить все расположения классов в команды компиляции и выполнения.Итак, если вам нужно скомпилировать и выполнить Example.java файл с зависимостью Parent.jar, сделайте следующее: -

Скомпилируйте

javac -classpath /path/to/Parent.jar/file/Parent.jar:/path/to/Example.java/file/ Example.java

Выполните

java -classpath /path/to/Parent.jar/file/Parent.jar:/path/to/Example.class/file Example

И обратите внимание на разделитель - должно быть : для Linux и ; для Windows.

Спасибо,
Sandeepan

Ответы [ 2 ]

1 голос
/ 19 января 2011

Когда Eclipse запускается, он должен спросить вас, какое рабочее пространство использовать. Выберите папку с примерами, и, если это действительно рабочее пространство Eclipse, вы должны увидеть все уже настроенные проекты (может потребоваться некоторое время для сборки всего, в зависимости от размера проектов и скорости вашего компьютера). Затем просто найдите нужный класс и запустите его. Если все настроено правильно, оно должно просто работать. Если нет, возможно, вам придется обратиться к разработчику за более подробной информацией.

Но я не думаю, что вам нужен Eclipse для запуска этого одного класса. Глядя на трассировку стека, которую вы указали в начале вашего вопроса, похоже, что он не запустился, потому что вы не правильно указали путь к классам. Попробуйте:

java -classpath /opt/Java/libs/JPST/lib/jpst.jar:/opt/Java/libs/JPST/examples/GetInboxMessages/bin Example

Чтобы очень кратко объяснить: путь к классам перечисляет места, где Java ищет нужные ей классы. Вы указываете класс для запуска относительно пути к классу, а не как путь к файлу. Так как класс, который вы пытаетесь запустить в папке "/ opt / Java / libs / JPST / examples / GetInboxMessages / bin", эта папка должна находиться в пути к классам (обратите внимание, я предполагаю, что система на основе Unix, если вы используете Windows использует ';' для разделения записей, а не ':'). Затем просто укажите класс для запуска относительно пути к классу (который в данном случае является просто именем класса).

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

0 голосов
/ 19 января 2011

Похоже на проблему с classpath.

  • Щелкните правой кнопкой мыши ваш проект в Eclipse.

  • Перейдите в buildPath> настроить путь сборки

  • Убедитесь, что на файл jar есть ссылка на вкладке библиотеки и если он не добавлен.
...