繁体   English   中英

尝试在Java中复制PHP的exec()函数

[英]Trying to replicate PHP's exec() function in Java

我正在尝试在Java应用程序中复制PHP的exec函数 这是PHP代码:

exec('C:/executer.au3');

这是Java代码:

Runtime.getRuntime().exec("C:/executer.au3");

当我运行时,我得到一个IOException说:

Exception in thread "main" java.io.IOException: Cannot run program "C:/executer.au3": CreateProcess error=193, %1 is not a valid Win32 application
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    at java.lang.Runtime.exec(Runtime.java:615)
    at java.lang.Runtime.exec(Runtime.java:448)
    at java.lang.Runtime.exec(Runtime.java:345)
    at Executer.execute_captcha_check(Executer.java:248)
    at _ProjectAmsterdam.main(_ProjectAmsterdam.java:36)
Caused by: java.io.IOException: CreateProcess error=193, %1 is not a valid Win32 application
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:189)
    at java.lang.ProcessImpl.start(ProcessImpl.java:133)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021)
    ... 5 more

我有点不了解了,如何才能在Java中打开该au3文件?

您提到的文件是一个自动脚本文件,它本身不会执行任何操作。 就像一个文本文件。

您可能需要提供将运行文件的程序-例如Autoit.exe程序。

Runtime.getRuntime().exec("/Path/To/Autoit.exe C:/executer.au3");

按照这些原则,我目前无法测试。

PHP exec版本可能会以某种方式触发.au3文件的默认程序。 那只是个猜测。

尽管使用脚本作为命令行参数运行AutoIt.exe可以正常工作,并且在大多数情况下可能还不错,但我还是想介绍一下。

PHP exec函数可能使用ShellExecute而不仅仅是运行它。 这会在注册表中查找以查找.au3文件的关联操作。

使用Desktop.getDesktop().open(SomeFile)在Java中可以完成类似的操作。

但是,AutoIt允许用户在安装时检查是否要编辑脚本文件或运行默认操作。 根据那里的设置,这可能意味着您最终将在文本编辑器中打开脚本,而不是按预期运行它。 ShellExecute (Windows API函数)提供了要使用的动词的选项(默认为打开)。 这将允许您始终使用run动词,但意味着使用Java中的windows函数,这意味着像这样的包装器。 尽管这意味着要付出更多的努力,但您可以确保它可以在任何有效的AutoIt安装中使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM