Runtime.exec(cmd)
方法的调用,在该方法中,它会弹出一个运行本机应用程序的1行shell脚本。 (R
,如果你很好奇...)一切都很好,除了本机应用程序需要设置一些环境变量,它可以做一些事情,如访问数据库。我无法编辑java代码并重新编译。我想我可以编辑.war文件的内容,但我不知道要编辑什么。但我认为没关系 - 子进程通常会继承父进程的环境,对吧?所以我认为我只需要JVM的环境来包含ORACLE_HOME和其他环境变量。
我发现你可以将变量放在bin/setenv.sh
文件中,这些变量在tomcat进程加载时使用。我尝试在那里添加环境变量,但这不起作用。
所以:
感谢您帮助我让这个丑陋的黑客工作!
答案 0 :(得分:0)
嗯,#2的答案很简单。正如我所说,exec()调用调用运行应用程序的shell脚本。我刚刚打开了.war文件,并向其中添加了一些export FOO=bar
行,将结果放回到tomcat webapps目录中,然后就可以了。