Запустить весенний проект из командной строки
Я создал один проект 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
класс должен иметь основной метод конечно