Запустить весенний проект из командной строки

Я создал один проект Spring в STS (инструмент исходного кода Spring), который прекрасно работает (компилирование и выполнение) в STS, но когда я запускаю файл класса из терминала, я получаю ошибку, подобную этой:

Исключение в потоке "main" java.lang.NoClassDefFoundError: com/XXXX/XXXX/ Операции
Вызвано: java.lang.ClassNotFoundException: com.XXXX.XXXX.Operations

Для справки ниже мой файл.classpath:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java" />
<classpathentry kind="src" output="target/test-classes"path="src/test/java" />
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/
org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5" />
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER" />
<classpathentry kind="output" path="target/classes" />
<classpathentry exported="true" kind="var" path="M2_REPO" />
</classpath>

2 ответа

Ваша ошибка говорит о том, что файл "Operations.class" отсутствует в папке target/classes (или в названии вашего пакета есть опечатка).

Сначала убедитесь, что ваш класс находится там, где вы ожидаете:

cd [project root]/target/classes
ls com/XXXX/XXXX/Operations.class

Если это подтвердит наличие файла, вы сможете использовать упомянутую выше команду java:

java com.XXXX.XXXX.Operations

Убедитесь, что вы не добавляете ".class" в конце, так как Java будет предполагать, что вы пытаетесь загрузить файл с именем "class" в пакет "Operations".

Если файл отсутствует (я ожидаю, что это будет), вам нужно будет выполнить сборку в STS (Project -> Build Project) создать его.


Обновить

В комментариях вы упоминаете, что получаете сообщение об ошибке:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext

Это совсем другая проблема, это означает, что вы не ссылались на библиотеки Spring в своей команде java, поэтому Java не знает, где их найти.

Я рекомендую вам упаковать программу в STS, прежде чем пытаться ее запустить. Это типичный способ, которым разработчики Java создают и разворачивают приложения. Эта статья содержит простое руководство о том, как это сделать (STS - это вариант Eclipse).

Дополнение - ваш обновленный вопрос предполагает, что вы также используете Maven в этом приложении, и в этом случае вы можете использовать "mvn package" для сборки проекта вместо Eclipse. Прочтите это руководство, чтобы начать использовать Maven: http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

Если вы действительно хотите запустить программу без упаковки; вам нужно будет сослаться на ВСЕ файлы Jar, которые вы используете в команде (это только пример, замените "spring.jar" правильными файлами Jar, которые вы используете):

java -classpath .;../../lib/spring.jar com.XXXX.XXXX.Operations

Обычно люди создают jar-файл, который содержит все классы и ресурсы, необходимые для запуска приложения. После этого легко запустить приложение:

java -cp youapp-full.jar  com.XXXX.XXXX.Operations

А также Operations класс должен иметь основной метод конечно

Другие вопросы по тегам