如何触发Java应用程序(使用Google GO / golang子进程的java -jar

huangapple 未分类评论64阅读模式
英文:

how to trigger java aplication (java -jar <app_name> from Google GO / golang sub_process

问题

我正在尝试从Golang作为子进程触发Java命令行应用程序。但是由于某种原因,它失败了,当我从GO启动它时,我实际上没有得到Java应用程序界面。它等待几秒钟后以错误代码"无法连接..."终止。

这是我尝试使用的代码:

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(cmd_output)
}

如果我们尝试只使用 cmd_prep := "java -version",它会再次失败。它应该给我输出如下:

<< 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 >>

正常的语法,比如 cmd_prep := "ls -l",工作正常。有什么线索吗?可能是什么原因呢?提前感谢您的帮助。

英文:

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 (
    &quot;fmt&quot;
    &quot;os/exec&quot;
)
func main() {
    start_java_app_test()
}
func start_java_app_test() {
    cmd_prep := &quot;java -Xmx2g -jar test_app.jar&quot;
    cmd_output, err := exec.Command(&quot;bash&quot;, &quot;-c&quot;, cmd_prep).Output()
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(vba_ssh_cmd_output)
}

If we try just to use --> cmd_prep := &quot;java -version&quot; <--
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 := &quot;ls -l&quot; <-- works fine.
Any clue ?
What might be the reason here ?
Thanks in advance,
.C

答案1

得分: 0

它与'CombinedOutput'非常好用 如何触发Java应用程序(使用Google GO / golang子进程的java -jar <app_name>)

$ go run TestCombinedOutput.go 
java版本 "1.8.0_65"
Java(TM) SE Runtime Environment (版本 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (版本 25.65-b01, 混合模式)

非常感谢。

祝好,

.C

英文:

It works very well with 'CombinedOutput' 如何触发Java应用程序(使用Google GO / golang子进程的java -jar <app_name>)

$ go run TestCombinedOutput.go 
java version &quot;1.8.0_65&quot;
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

huangapple
  • 本文由 发表于 2015年12月28日 09:04:41
  • 转载请务必保留本文链接:https://java.coder-hub.com/34486547.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定