猿问

bash执行java程序时读取文件问题

写了一个java程序,程序启动时会读取和jar包统计目录的myapp.conf文件
在linux中通过java-jarmyapp.jar的方式可以正常启动程序
但是在把命令加入到rc.local后却无法启动,查看日志发现是不能读取到myapp.conf文件
rc.local文件
#!/bin/sh
#Thisscriptwillbeexecuted*after*alltheotherinitscripts.
#Youcanputyourowninitializationstuffinhereifyoudon't
#wanttodothefullSysVstyleinitstuff.
touch/var/lock/subsys/local
exportJAVA_HOME=/usr/java/jdk1.7.0_71
exportCLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar
exportPATH=$PATH:$JAVA_HOME/bin
java-jar/opt/agent/myapp.jar>/opt/agent/myapp.out2>&1&
是不是rc.local在执行java程序时会认为脚本所在目录为执行目录?
java读取文件的方法
publicstaticStringGetFile(StringfileName){
StringstrContent="";
try{
StringstrEncoder=GetEncoder(fileName);
BufferedReaderbiFile=newBufferedReader(newInputStreamReader(newFileInputStream(fileName),strEncoder));
StringstrSingleLine;
while((strSingleLine=biFile.readLine())!=null){
strContent+=strSingleLine;
strContent+="\n";
}
biFile.close();
}
catch(Exceptione){
System.out.println(e.getLocalizedMessage());
}
finally{
returnstrContent;
}
}
各位帮忙看看应该怎么办?
烙印99
浏览 425回答 2
2回答

忽然笑

rc.local由init进程调度,你没有设置当前目录,那么它在执行的时候,当前目录就是/,跟当前脚本(rc.local)所在目录没关系,当然没有你需要的myapp.conf文件要么你在rc.local里加一句cd/path/to/jar要么在java代码中制定myapp.conf文件的绝对路径
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答