我正在使用IntelliJ开发Scala项目。
由于系统的客户端 - 服务器架构,我的集成测试必须使用build.sbt中的以下设置运行:
fork in IntegrationTest := true
javaOptions in (IntegrationTest) ++= Seq("-Djdk.logging.allowStackWalkSearch=true", "-XX:PermSize=256M", "-XX:MaxPermSize=512M", "-Xmx1024m")
// for attaching with debugger to the processes under test
javaOptions in (IntegrationTest) += "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
通常一切正常 - 测试正在运行,调试工作正常。
有时我需要建立VPN连接以访问我的员工公司的某些资源。我使用Check Point Endpoint Security VPN(这是我的员工的官方推荐软件,我不确定是否还有其他工作)。
所以,如果我碰巧连接到VPN然后运行集成测试,那么SBT控制台就会在之后开始卡住:
Listening for transport dt_socket at address: 5005
确切的信息是:
Listening for transport dt_socket at address: 5025
[error] Uncaught exception when running tests: java.net.ConnectException: Connection timed out: connect
[trace] Stack trace suppressed: run last project/it:test for the full output.
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
当我运行last project/it:test
时(我必须首先重新加载SBT控制台,因为它已陷入(busy) >
状态)我看到了:
[debug] javaOptions: List(-Djdk.logging.allowStackWalkSearch=true, -XX:PermSize=256M, -XX:MaxPermSize=512M, -Xmx1024m, -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005)
[debug] Forking tests - parallelism = false
[debug] Create a single-thread test executor
[error] Uncaught exception when running tests: java.net.ConnectException: Connection timed out: connect
有时当我断开VPN并再次运行测试时,它会开始工作。但经常断开VPN并没有帮助,我必须重新启动计算机。
我尝试了一些不太引人注目的解决方案 - 重新启动IDE,杀死所有java和javaw进程,查看netstat结果以查看仍在使用端口5005的任何内容,在build.sbt中将端口更改为5025并重新加载SBT控制台...什么都行不通,只能重启,直到下次我需要连接到VPN。
这是一场噩梦。我连接到VPN后,每次都不想重新启动计算机。 这有什么解决方案吗?任何Java标志?任何Windows网络堆栈设置?任何VPN设置?