首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用依赖于外部库的java程序

调用依赖于外部库的java程序
EN

Stack Overflow用户
提问于 2009-12-02 21:16:41
回答 4查看 548关注 0票数 0

我正尝试在php中调用一个java程序,以便在web界面中使用它。

Java程序依赖于外部库: commons-cli-1.2.jar

所以基本上我需要在调用java程序之前导出它;但是如果我首先导出它,如下所示:

代码语言:javascript
运行
复制
shell_exec('export CLASSPATH=$CLASSPATH:~/lib/commons-cli-1.2.jar');

然后像下面这样调用java程序:

代码语言:javascript
运行
复制
shell_exec('java ComputePagerank -i $para_i -d $para_d -e $para_e -o $para_o');

我认为它为每个调用创建了不同的shell;然后导出对java程序没有任何影响。还是我错了?

否则,它应该在服务器中输出一个文件。但事实并非如此。那么,出了什么问题呢?有什么想法吗?

编辑:然而,会不会是因为一些参数,比如para_i代表了一个输入文件名,所以我必须为它指定完整的路径?因为我只是假设如果输入文件在相同的工作目录中,就不会有任何问题,不是吗?

edit-2:当我使用命令行时,输出正确;)

EN

回答 4

Stack Overflow用户

发布于 2009-12-02 21:19:31

您说得对,每个shell_exec都创建了一个单独的外壳。

代码语言:javascript
运行
复制
env CLASSPATH=whatever java -switches
票数 0
EN

Stack Overflow用户

发布于 2009-12-02 21:20:04

你应该可以这样称呼它。

代码语言:javascript
运行
复制
shell_exec('java -cp $CLASSPATH:~/lib/commons-cli-1.2.jar ComputePagerank -i $para_i -d $para_d -e $para_e -o $para_o > message');

另一种选择是分别发出这两个命令,但使用相同的shell,如下所示:

代码语言:javascript
运行
复制
shell_exec('export CLASSPATH=$CLASSPATH:~/lib/commons-cli-1.2.jar; java ComputePagerank -i $para_i -d $para_d -e $para_e -o $para_o > message');

编辑:在设置变量时,有些shell不允许调用export。因此,这可能比上面的第二种选择更安全:

代码语言:javascript
运行
复制
shell_exec('CLASSPATH=$CLASSPATH:~/lib/commons-cli-1.2.jar; export CLASSPATH; java ComputePagerank -i $para_i -d $para_d -e $para_e -o $para_o > message');

另一个编辑:如果上面的方法都不起作用,那么你将不得不进行更多的故障排除。你的java程序能在命令提示符下工作吗?

代码语言:javascript
运行
复制
java -cp $CLASSPATH:/home/user/lib/commons-cli-1.2.jar ComputePagerank -i param1 -d param2 -e param3 -o param4 > message
票数 0
EN

Stack Overflow用户

发布于 2009-12-02 21:28:36

我会用

代码语言:javascript
运行
复制
shell_exec('java -cp $CLASSPATH:/home/yourname/dir/lib/commons-cli-1.2.jar ComputePagerank -i $para_i -d $para_d -e $para_e -o $para_o > message');

并且(这一点很重要)将代字号(~)替换为您的目录的实际路径(比如/home/yourname)。~由shell扩展,并且取决于您使用的shell。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1832840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档