【发布时间】:2020-04-09 09:08:05
【问题描述】:
我正在使用以下简单的 build.gradle 项目模板:
buildscript { repositories { maven { url repoUrlPublic } } dependencies { classpath "org.gretty:gretty:3.0.2" } } apply plugin: "org.gretty" apply plugin: 'war' description = "Servlet Template" group = "com.grp" version = "0.0.1" sourceCompatibility = "1.8" targetCompatibility = "1.8" repoUrlPublic = "http://..." //gradlew run ext { javaMainClass = "com.pckg.TemplateJAR" } war { baseName 'template' } gretty { debugPort = 5005 // default debugSuspend = true // default httpPort = 8585 servletContainer = 'jetty9.3' } repositories { // project nexus server repository maven { url repoUrlPublic } } dependencies { implementation 'org.slf4j:slf4j-api:1.7.25' implementation 'ch.qos.logback:logback-classic:1.2.3' implementation 'ch.qos.logback:logback-core:1.2.3' compileOnly 'javax.servlet:javax.servlet-api:3.0.1' }
并且使用指定的版本会产生以下问题:
gradlew appRunDebug 拾取 JAVA_TOOL_OPTIONS: -Duser.language=en 在地址监听传输 dt_socket:5005 10:45:40.594 [main] 调试 org.akhikhl.gretty.ServiceProtocol - ServiceProtocol.send(61607, init 61611) 线程“主”java.net.ConnectException 中的异常: 连接超时:连接 在 java.net.DualStackPlainSocketImpl.connect0(本机方法) 在 java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 在 java.net.Socket.connect(Socket.java:589) 在 java.net.Socket.connect(Socket.java:538) 在 java.net.Socket.(Socket.java:434) 在 java.net.Socket.(Socket.java:244) 在 org.akhikhl.gretty.ServiceProtocol$Writer.write(ServiceProtocol.groovy:76) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43) 在 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrap.invoke(PogoMetaMethodSite.java:179) 在 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:70) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127) 在 org.akhikhl.gretty.Runner.run(Runner.groovy:118) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43) 在 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:190) 在 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:70) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119) 在 org.akhikhl.gretty.Runner.main(Runner.groovy:53) 拾取 JAVA_TOOL_OPTIONS: -Duser.language=en 线程“Thread-65”中的异常 org.gradle.process.internal.ExecException:进程'命令 'C:\Java\jdk1.8.0_191\bin\java.exe'' 以非零退出值结束 1 在 org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:396) 在 org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:38) 在 org.gradle.process.internal.DefaultExecActionFactory.javaexec(DefaultExecActionFactory.java:129) 在 org.gradle.api.internal.project.DefaultProject.javaexec(DefaultProject.java:1105) 在 org.gradle.api.internal.project.DefaultProject.javaexec(DefaultProject.java:1100) 在 org.gradle.api.Project$javaexec$6.call(未知来源) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127) 在 org.akhikhl.gretty.DefaultLauncher.javaExec(DefaultLauncher.groovy:100) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104) 在 groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326) 在 org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:352) 在 org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:68) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:168) 在 org.akhikhl.gretty.LauncherBase$_launchThread_closure5.doCall(LauncherBase.groovy:208) 在 org.akhikhl.gretty.LauncherBase$_launchThread_closure5.doCall(LauncherBase.groovy) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104) 在 groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326) 在 org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264) 在 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041) 在 groovy.lang.Closure.call(Closure.java:411) 在 groovy.lang.Closure.call(Closure.java:405) 在 groovy.lang.Closure.run(Closure.java:492) 在 java.lang.Thread.run(Thread.java:748)
设置 gretty 插件版本 3.0.1 后,脚本可以正常运行。知道为什么脚本不向后兼容吗?
【问题讨论】:
-
我喜欢像代码一样格式化堆栈跟踪(以避免包装),但自动验证报告我的问题包含大量没有任何描述的代码。
-
我看到与 3.0.2 类似的行为: 原因:java.net.ConnectException:连接被拒绝:连接 org.akhikhl.gretty.ServiceProtocol$Writer.write(ServiceProtocol.groovy:76)在 org.akhikhl.gretty.ServiceProtocol$Writer$write.call(Unknown Source) 在 org.akhikhl.gretty.LauncherBase$_beforeLaunch_closure2.doCall(LauncherBase.groovy:71)