【问题标题】:Calling a Java program from a CGI script fails从 CGI 脚本调用 Java 程序失败
【发布时间】:2011-04-16 12:52:05
【问题描述】:
我有一个 Python CGI 脚本,我试图从中调用 Java 程序来执行任务。 Java 程序使用JExcelAPI。当我从浏览器运行 Python 脚本时,它会失败并显示无法从 JExcelAPI 中找到类的类定义的错误消息。我想这是因为 Python CGI 脚本是在 apache 用户下运行的,而 apache 用户没有设置适当的环境变量(即 CLASSPATH 变量)。我尝试使用-classpath /path/to/JExcelAPI 开关调用程序,但这也不起作用。你能帮我找到让 apache 用户了解 JExcelAPI 的方法吗?有没有办法为apache用户设置CLASSPATH环境变量?
谢谢
【问题讨论】:
标签:
java
python
linux
apache
cgi
【解决方案1】:
想到几个解决方案:
创建一个调用 java 程序的 bash 脚本。您可以设置您喜欢的所有变量并在命令行上调试,例如sudo -u apache /usr/local/bin/java-task-wrapper。这大大简化了从 cgi 调用它的过程,并且与启动 JVM 相比,bash 的开销可以忽略不计。
使用 uberjar 等工具创建一个独立的可执行 jar。不再有 classpah 问题,因为所有内容都包含在内:java -jar java-task-standalone.jar
执行java -cp /path/to/JExcelAPI:/my/program/classes com.acme.MainClass
exec 通常有一个变体,它需要一个额外的数组或 hashmap 来添加环境变量。
一些注意事项: