gpt4 book ai didi

java - Bash 脚本中的 NoClassDefFoundError

转载 作者:太空宇宙 更新时间:2023-11-04 14:26:30 26 4
gpt4 key购买 nike

我目前正在尝试从 bash 脚本中运行我的应用程序。当我从控制台运行 java 应用程序时,它工作正常。我已经编译了 java 应用程序,并在脚本中尝试了多个不同的命令,但无法弄清楚。我对脚本编写相当陌生,所以我猜测它与语法有关。我还在这里阅读了多篇不同的帖子,但似乎没有任何效果。

这是我的脚本,我将其作为 sh 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

最佳答案

包之间用句点 (.) 分隔,而不是斜杠 (/),因此:

#!/bin/bash
CLASSPATH=json-simple-1.1.jar:log4j-1.2.17.jar:.
# Note the classname:
result=$(java -cp $CLASSPATH com.api.endpoint.MyApp $INI)
echo $result

关于java - Bash 脚本中的 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26615620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com