我正在构建一个php应用程序。在脚本中,有一个调用来执行jar文件:
?php
exec('java -jar simulations/simulation.jar');
?>问题是这个命令行执行jar文件:
user@ubuntu: php execSimulation.php但不是网页上的电话。这个电话是阿贾克斯打的,我是不是遗漏了什么??
<!-- Script to execute the simulation -->
<script type="text/javascript" src="prototype.js"></script>
<script>
function sendRequest() {
new Ajax.Request("ejecutarSimulacion.php",
{
method: 'post',
postBody: 'name='+ $F('name'),
onComplete: showResponse
});
}
function showResponse(req){
alert(req.responseText);
}
</script>
<form id="test" onsubmit="return false;">
<input type="hidden" value="<?php echo $simulacion; ?>" name="name" id="name" >
<input type="submit" value="<?php echo $nombre; ?>" onClick="sendRequest()">
</form>例如,当我试图只打印我发送的param时,警报会显示它,所以我确信调用已经到达服务器,但我不知道为什么jar文件没有执行。有什么想法吗?
提前谢谢。
编辑
错误跟踪:
No protocol specified
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:62)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:178)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:142)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
at java.awt.Window.init(Window.java:385)
at java.awt.Window.<init>(Window.java:438)
at java.awt.Frame.<init>(Frame.java:419)
at java.awt.Frame.<init>(Frame.java:384)
at javax.swing.JFrame.<init>(JFrame.java:174)
at org.opensourcephysics.tools.TranslatorTool.<init>(Unknown Source)
at org.opensourcephysics.tools.TranslatorTool.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at org.opensourcephysics.display.OSPRuntime.<clinit>(Unknown Source)
at org.opensourcephysics.controls.OSPLog.fine(Unknown Source)
at org.opensourcephysics.tools.ResourceLoader.addSearchPath(Unknown Source)
at _users.tanqueCalentamiento.TanqueCalentamiento.<clinit>(TanqueCalentamiento.java:18)
Could not find the main class: _users.simulation.Simulation. Program will exit.发布于 2011-08-17 19:13:11
您的jar似乎需要一个X服务器才能运行。
无法使用“:0.0”作为显示变量的值连接到X11窗口服务器。
当您从命令行运行它时,是否有X在运行?如果您这样做了,这将解释为什么它在那里工作,而不是从PHP。
您可以尝试从PHP“劫持”正在运行的X会话。
exec('DISPLAY=:0 java -jar simulations/simulation.jar');您可能必须首先从命令行运行xhost +localhost (或xhost +),以允许用户PHP作为连接到X的方式运行。
发布于 2011-08-17 19:13:33
用杰米·萨维奇( Jamie )不朽的话来说,“这是你的问题。”
您正在运行的Java程序试图在初始化时访问您的X Windows“服务器”(即屏幕),当您从命令行运行而不是从无头web服务器运行时,该程序可以工作。和写org.opensourcephysics.tools.TranslatorTool的人谈谈如何禁用这种(严重功能失调的)行为。
发布于 2011-08-17 18:24:32
在exec()中使用完整路径: CLI SAPI和apache路径之间的基本路径是不同的。
<?php
exec('full/path/to/jar');https://stackoverflow.com/questions/7097553
复制相似问题