В настоящее время я пытаюсь запустить приложение из сценария bash. Когда я запускаю приложение java с консоли, он отлично работает. Я скомпрометировал приложение java и попробовал несколько разных команд внутри скрипта и не могу понять это. Я довольно новичок в написании сценариев, поэтому я предполагаю, что это связано с синтаксисом. Я также читал несколько разных сообщений, но ничего не работает.NoClassDefFoundError from Bash Script
Вот мой сценарий, и я бегу как ш endpoint.sh
#!/bin/bash
CLASSPATH=json-simple-1.1.jar:log4j-1.2.17.jar:.
result=$(java -cp $CLASSPATH com/api/endpoint/MyApp $INI)
echo $result
ошибка я получаю следующим образом
Exception in thread "Main Thread" java.lang.NoClassDefFoundError: com/api/endpoint/MyApp
Caused by: java.lang.ClassNotFoundException: com.api.endpoint.MyApp
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:305)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:246)
Could not find the main class: com/api/endpoint/MyApp. Program will exit.
Приложение находится в пакете com.api .endpoint и находится в этом каталоге. У меня такое ощущение, что это простое, что я не замечаю, но я боролся с этим в течение нескольких дней. Есть идеи?
Полный сценарий:
#!/bin/bash
# Set the search path for the shell to be the standard places.
PATH=setting the path here; export PATH
# Config file
INI=config.ini
# Log function
function log()
{
timestamp=`date +"%s"`
echo "$timestamp:$1">>$ERROR_LOG_FILE
}
# Read config file
if [ -f $INI ]
then
source $INI
else
exit 1 # terminate the script and return error
fi
# create error log file
echo -n "" > $ERROR_LOG_FILE
# prepare the WLST env to execute api list python script
source $WLST_SCRIPT
# call list.py
result=$(java wb.WLST $WLST_PYTHON_SCRIPT)
if [[ $result == *Exception* ]]
then
log "$result"
exit 1 # terminate the script with error code
fi
# prepare the java env to execute region inventory java app
PATH="/tmp/:$PATH"; export PATH
#echo $PATH
CLASSPATH=json-simple-1.1.jar:log4j-1.2.17.jar:.
result=$(java -cp $CLASSPATH com/api/endpoint/MyApp $INI)
echo $result
Что такое '$ INI'? Вы можете запустить эти * точные * команды вручную из одного и того же каталога и заставить его работать? –
Я думаю, что основной аргумент класса использовался '.' Обозначение: 'com.api.endpoint.MyApp' – Arkadiy
Что« находит. -name 'MyApp *' 'return? – Dancrumb