【问题标题】:Fan command from a Fantom process Failing来自 Fantom 进程的风扇命令失败
【发布时间】:2016-12-12 18:09:31
【问题描述】:

我正在尝试从 Fantom 进程调用风扇命令。这是它从 Fantom 运行的错误,它从命令行正确运行。您认为问题可能是什么?

class Main {
   Void main() {
       buf := Buf()

       Process() {
          command = ["fan <pod>::<type>.<method>"]
          out = buf.out 
       }.run.join

       outStr := buf.flip.readAllStr
    }   
}  

这是我得到的错误:

sys::IOErr: java.io.IOException: Cannot run program "fan <pod>::<type>.<method>": 
CreateProcess error=2, The system cannot find the file specified
  java.lang.ProcessBuilder.start (Unknown)
  fan.sys.Process.run (Process.java:141)
  PDFCommandLine::Main.main (Main.fan:10)
  java.lang.reflect.Method.invoke (Unknown)
  fan.sys.Method.invoke (Method.java:559)
  fan.sys.Method$MethodFunc.callOn (Method.java:230)
  fan.sys.Method.callOn (Method.java:139)
  fanx.tools.Fan.callMain (Fan.java:185)
  fanx.tools.Fan.executeType (Fan.java:147)
  fanx.tools.Fan.execute (Fan.java:41)
  fanx.tools.Fan.run (Fan.java:308)
  fanx.tools.Fan.main (Fan.java:346)

【问题讨论】:

    标签: cmd fantom


    【解决方案1】:

    我认为问题在于没有名为fan 的Windows 文件,只有fan.bat

    只有 Windows 命令提示符会插入 fan 并查找可执行扩展名,.com.bat.cmd.exe 等...

    注意BedSheet 代理的经验告诉我,新的fan.bat 在单独的进程中启动 Java,并且批处理文件立即完成;因此,即使 Fantom 程序成功运行,您实际上也不会收到来自 Process 类的任何输出。

    相反,您需要编写一个自己启动 Java 进程的命令。比如:

    C:\> java -cp %FAN_HOME%\lib\java\sys.jar fanx.tools.Fan <pod>::<type>.<method>
    

    这里有一个小 sn-p,它以跨平台的方式做到这一点:

    static Process fanProcess(Str[] cmd) {
        homeDir   := Env.cur.homeDir.normalize
        classpath := (homeDir + `lib/java/sys.jar`).osPath
        args      := ["java", "-cp", classpath, "-Dfan.home=${homeDir.osPath}", "fanx.tools.Fan"].addAll(cmd)
        return Process(args)
    }
    

    你可以这样使用:

    buf := Buf()
    fanProcess(["<pod>::<type>.<method>", "arg1", "arg2"]) {
        out = buf.out 
    }.run.join
    outStr := buf.flip.readAllStr
    

    请注意,以上要求 java 必须在您的 PATH 上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-28
      • 2019-06-09
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多