写了一个java程序,程序启动时会读取和jar包统计目录的myapp.conf文件
在linux中通过java -jar myapp.jar的方式可以正常启动程序
但是在把命令加入到rc.local后却无法启动,查看日志发现是不能读取到myapp.conf文件
rc.local文件
1 2 3 4 5 6 7 8 9 10 11 |
|
是不是rc.local在执行java程序时会认为脚本所在目录为执行目录?
java读取文件的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
各位帮忙看看应该怎么办?
PHP中文网2017-04-17 13:07:18
rc.local由init进程调度,你没有设置当前目录,那么它在执行的时候,当前目录就是 /
,跟当前脚本(rc.local)
所在目录没关系,当然没有你需要的myapp.conf
文件
要么你在rc.local里加一句 cd /path/to/jar
要么在java代码中制定myapp.conf文件的绝对路径
巴扎黑2017-04-17 13:07:18
1.对于myapp.jar
程序,能否接受参数的呢?然后通过执行java -jar /opt/agent/myapp.jar /path/to/myapp.conf
命令,这样去指定配置文件的路径,然后最终将这个路径参数传给GetFile
方法。
下面是笨的方法
2. 你可不可以将myapp.conf
固定在一个路径下呢
然后调用GetFile
(为什么不是getFile)方法的时候传入那个固定的路径
巴扎黑2017-04-17 13:07:18
CLASSPATH这个变量不再需要,别被国内误人子弟的资料误导。JDK6以后版本默认添加这个变量,不建议自己乱改,会导致各种问题。而且java有-cp参数临时增加classpath运行程序,不再需要这个变量,也不应该在初始化的时候设置这个变量。
其次就是相对路径的问题,虽然用着方便,但是会受到当前目录的影响。建议健壮的解决方案是让程序自己判断自己所在的路径,以自己当前目录为基准,拼接相对路径成为绝对路径。