首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jsvc & Gradle -无控制台输出,Gradle守护进程崩溃

jsvc & Gradle -无控制台输出,Gradle守护进程崩溃
EN

Stack Overflow用户
提问于 2017-07-22 04:08:18
回答 1查看 553关注 0票数 0

我正尝试在我的本地机器上使用IntelliJ思想测试我的Java应用程序(它打算用作守护进程,因此使用jsvc)。

出于测试目的,我希望将stdout和stderr输出到控制台。根据jsvc help site (jsvc --help)设置,-outfile '&2'-errfile '&1'应该将标准输出和标准错误重定向到对方(根据我的理解)。

在正常的shell中(设置了这两个选项),守护进程启动并将一些内容输出到控制台,但是当使用Gradle Exec task和完全相同的命令时,Gradle守护进程崩溃并输出到文件'&2‘和'&1’。

任务配置:

代码语言:javascript
复制
File jsvcFile = file("./jsvc")
File pidFile = file("./jsvc.pid")

String mainClass = "substupdater.SubstUpdater"

task run (dependsOn: [jar, jsvc], type: Exec) {

    doFirst {

        // Get the absolute path of all libraries
        String classPath = project.configurations.compile.join(':')

        executable(jsvcFile)

        args("-server", "-cp", classPath + ':' + jar.archivePath, "-nodetach",
             "-cwd", project.rootDir, "-outfile", "'&2'", "-errfile", "'&1'",
             "-pidfile", pidFile, "-procname", project.name, mainClass, "debug")

    }
}

Gradle守护程序崩溃(gradle -d运行):

代码语言:javascript
复制
21:57:52.911 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTING
21:57:52.914 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Waiting until process started: command '/path/to/jsvc'.
21:57:52.924 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTED
21:57:52.925 [INFO] [org.gradle.process.internal.DefaultExecHandle] Successfully started process 'command '/path/to/jsvc''
21:57:52.926 [DEBUG] [org.gradle.process.internal.ExecHandleRunner] waiting until streams are handled...
Daemon vm is shutting down... The daemon has exited normally or was terminated in response to a user interrupt.
21:57:53.528 [DEBUG] [org.gradle.launcher.daemon.registry.PersistentDaemonRegistry] Removing daemon address: [some-address port:35450, addresses:[/0:0:0:0:0:0:0:1%lo, /127.0.0.1]]
21:57:53.529 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire exclusive lock on daemon addresses registry.
21:57:53.529 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
21:57:53.530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
21:57:53.530 [DEBUG] [org.gradle.process.internal.ExecHandleRunner] Abort requested. Destroying process: command '/path/to/jsvc'.
21:57:53.532 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: ABORTED
21:57:53.533 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Process 'command '/path/to/jsvc'' finished with exit value 1 (state: ABORTED)
----- End of the daemon log -----

21:57:53.888 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientInputForwarder] Dispatching close input message: org.gradle.launcher.daemon.protocol.CloseInput@ce9a99
21:57:53.888 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 18: dispatching class org.gradle.launcher.daemon.protocol.CloseInput
21:57:53.889 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 1: connection stop
21:57:53.907 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
21:57:53.907 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
21:57:53.907 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
21:57:53.908 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
21:57:53.908 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)
21:57:53.908 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
21:57:53.908 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try:
21:57:53.908 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Run with --stacktrace option to get the stack trace.

如有任何帮助,我们将不胜感激:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-22 20:41:53

我只需指定文件描述符符号链接的完整路径(即用于stdout/proc/self/fd/1和用于stderr/proc/self/fd/2 ),现在可以将输出输出到控制台。

Gradle守护进程仍然崩溃,但我认为这是由于Gradle无法处理jsvc守护进程自毁(?)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45245954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档