如何触发Java应用程序(来自Google GO / golang子进程的java -jar <app name>

I'm trying to trigger java command line application as a sub process from golang. For some reason it failed and actually I do not get java APP interface when I start it from GO. It wait for few sec and terminate with error code "can not connect ... " Here is a code I tried to use:

package main
import (
    "fmt"
    "os/exec"
)
func main() {
    start_java_app_test()
}
func start_java_app_test() {
    cmd_prep := "java -Xmx2g -jar test_app.jar"
    cmd_output, err := exec.Command("bash", "-c", cmd_prep).Output()
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(vba_ssh_cmd_output)
}

If we try just to use --> cmd_prep := "java -version" <-- it will fail again. It should give me output like << snip >> $ java -version java version "1.8.0_65" Java(TM) SE Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode) << /snip >>

The normal syntax like --> cmd_prep := "ls -l" <-- works fine. Any clue ? What might be the reason here ? Thanks in advance, .C

doushui5587
doushui5587 我将尝试使用CombinedOutput。实际上需要以某种方式将输出输出到字符串,然后我就可以解析它,regexp
4 年多之前 回复
dongli2000
dongli2000 >确切的错误是什么?当我尝试使用>>cmd_prep:=“java-version”<<时,没有输出。我尝试将'2>&1'添加到cmd_prep以重新路由所有路由,但什么都没发生。sam发生在python代码中...但是使用python我可以通过一些time.sleep()函数来修复。>是否有未在问题中说明使用bash的要求?是的,没有。我们使用的Java应用程序是由shell一线语法触发的,这是从golang做到这一点的想法。>否则,请直接运行Java。不知道该怎么做
4 年多之前 回复
douwu8251
douwu8251 请注意,Output方法将仅捕获stdout。发送到stderr的输出(就像java-version所做的一样)最终将到达/dev/null。相反,使用CombinedOutput可能会有所帮助,但可能无法完全解决问题。
4 年多之前 回复

1个回答



与'CombinedOutput'一起使用非常好:)</ p>

  $ $运行TestCombinedOutput  .go 
java版本“ 1.8.0_65”
Java(TM)SE运行时环境(内部版本1.8.0_65-b17)
Java HotSpot(TM)64位服务器VM(内部版本25.65-b01,混合模式)
</ 代码> </ pre>

非常感谢。</ p>

干杯,</ p>

.C </ p>
< / DIV>

展开原文

原文

It works very well with 'CombinedOutput' :)

$ go run TestCombinedOutput.go 
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

Thanks a lot.

Cheers,

.C

dongtuhe0506
dongtuhe0506 为此,我们需要在系统中安装JRE,对吗?
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问