我在java中有一个程序,它将第0个参数作为文件位置,如
File f = new File(args[0]);
所以当我使用Windows批处理(.bat)文件执行它时,它可以正常工作。 但是当我在linux中使用linux shell文件(.sh)执行相同的操作时,我得到了ArrayIndexOutOfBoundsException。
WINDOWS BATCH FILE:
@echo off
for /f %%i in ("%0") do set scriptpath=%%~dpi
set cp=%scriptpath%/../lib/*.jar;
java -classpath %cp% com.synchronizer.main.MYSynchronizer %scriptpath% "%1" "%2"
LINUX SH文件:
export JAVA_HOME=/usr/local/java
PATH=/usr/local/java/bin:${PATH}
THE_CLASSPATH=
for i in `ls ../lib/*.jar`
do
THE_CLASSPATH=${THE_CLASSPATH}:${i}
done
java -cp ".:${THE_CLASSPATH}" \
com.synchronizer.main.MYSynchronizer
请帮忙!
答案 0 :(得分:0)
答案 1 :(得分:0)
您的shell脚本未传递任何参数:
java -cp ".:${THE_CLASSPATH}" com.synchronizer.main.MYSynchronizer
尝试:
java -cp ".:${THE_CLASSPATH}" com.synchronizer.main.MYSynchronizer "$1" "$2"
答案 2 :(得分:0)
如上所述,您的Linux shell脚本不会向您尝试启动的Java程序发送任何参数。
而且,除此之外,您没有向我们展示如何运行Linux shell脚本。如果在启动shell脚本时没有在命令行上给出参数,则不能从shell脚本向Java应用程序传递任何参数。
如果要查看将由shell脚本运行的实际命令,可以始终将“echo”放在一行前面,并查看所有变量的扩展名。这是调试shell脚本的简单方法。