У меня есть работающее приложение Spring 5, которое прекрасно работает. Кстати, это Spring 5 CLASSI C, и он не использует Spring Boot. Таким образом, он не использует встроенный Tomcat. Я создал традиционный файл WAR и развернул его в существующей установке Tomcat.
Этот проект представляет собой проект с несколькими модулями, состоящий из нескольких jar-файлов и заканчивающийся одним файлом WAR. Это работает отлично. Я пытаюсь выполнить один класс в одном из этих jar-файлов как отдельный фрагмент кода, это утилита, которую я хочу запускать по ночам. Я знаю, что он хорошо работает в Eclipse, поэтому я знаю, что код в порядке.
Исходя из приведенных здесь показаний, совершенно очевидно, что нужно сделать.
java -cp SomeJava.jar com.tomholmes.products.myproject.server.util.MyClassUtil
Да, этот MyClassUtil действительно имеет «основной» метод, как и следовало ожидать.
public static void main(String[] args) throws Exception {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
MyClassUtil myClassUtil = new MyClassUtil();
myClassUtil.processBackLog();
}
Я развернул WAR-файл (MyProject.war), развернутый на моем linux блоке, и tomcat - это расположенный в: / opt / tomcat, файл войны развертывается в: / opt / tomcat / webapps, и когда мы перезапускаем tomcat, у нас есть:
/opt/tomcat/webapps/MyProject
/opt/tomcat/webapps/MyProject/META-INF
/opt/tomcat/webapps/MyProject/WEB-INF
/opt/tomcat/webapps/MyProject/WEB-INF/classes <--- no files at all
/opt/tomcat/webapps/MyProject/WEB-INF/libs <--- contains all JAR files including
the one that has my class in it
/opt/tomcat/webapps/MyProject/WEB-INF/libs/my-utils.jar <--- contains the class I want to
execute
У меня есть файл сценария 'my_util. sh' это выглядит так:
export JAVA_ROOT=/opt/java
export JAVA_HOME=/opt/java
export JAVA_BINDIR=/opt/java/bin
export JRE_HOME=/opt/java/jre
export JRE_BINDIR=/opt/java/jre/bin
export PATH=${JAVA_HOME}:${JAVA_BINDIR}:$PATH
export PATH=${JRE_HOME}:${JRE_BINDIR}:$PATH
export PATH=${JAVA_HOME}:${JAVA_BINDIR}:$PATH
datestr=$(date +%Y%m%d_%H%M%S)
export CLASSPATH=/opt/tomcat/webapps/MyProject/WEB-INF/libs/my-utils.jar
export MAINCLASS=com.tomholmes.products.myproject.server.util.MyClassUtil
java -cp ${CLASSPATH} ${MAINCLASS}
На что я получаю ответ:
Error: Could not find or load main class com.tomholmes.products.myproject.server.util.MyClassUtil
Основываясь на прошлых сообщениях здесь, которых много, и я провел исследование, я должен уже разрешили это И способ, которым я настраиваю все, должен работать, но это не так. Я уверен, что мне не хватает чего-то маленького, и я чувствую, что я почти там. Если кто-то может сделать предложение или помочь мне с этим, это было бы здорово. Я сам буду искать ответ, чтобы узнать, смогу ли я получить его до того, как на этот вопрос ответят.
Спасибо!