我们有一个在64位Windows Server 2008计算机上运行的TeamCity(7.0.3)代理.当我们最近将代理升级到使用Java 7(1.7.0_10)时,构建开始失败,并带有以下堆栈跟踪:
Error occurred during initialization of VM
java.lang.ExceptionInInitializerError
at java.lang.Runtime.loadLibrary0(Runtime.java:841)
at java.lang.System.loadLibrary(System.java:1084)
at java.lang.System.initializeSystemClass(System.java:1145)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:658)
at java.io.Win32FileSystem.<init>(Win32FileSystem.java:40)
at java.io.WinNTFileSystem.<init>(WinNTFileSystem.java:37)
at java.io.FileSystem.getFileSystem(Native Method)
at java.io.File.<clinit>(File.java:156)
at java.lang.Runtime.loadLibrary0(Runtime.java:841)
at java.lang.System.loadLibrary(System.java:1084)
at java.lang.System.initializeSystemClass(System.java:1145)
Run Code Online (Sandbox Code Playgroud)
该问题似乎是由于TeamCity在代理的可执行命令中使用了"-Dfile.separator = \"java选项引起的.我能够通过编写一个简单的"Hello World"类并在Windows框中编译它然后使用file.separator选项运行程序(即java -Dfile.separator =\HelloWorld)来重现该问题.
我没有找到任何类似的错误报告.有没有人见过这样的东西?在Java 7中是否更改了file.separator的行为?
此外我意识到\是Windows的默认file.separator,所以我不认为代理确实需要在可执行命令中使用它,但我无法在TeamCity中看到一种方法告诉代理不要包含它.是否有可能做到这一点?
我们在后端服务前面使用 Spring Cloud Gateway。我们有一条类似于以下的路线:
routes:
- id: foobar-service
uri: lb://foobar-service
predicates:
- Path=/foobar/**
filters:
- StripPrefix=1
Run Code Online (Sandbox Code Playgroud)
我们想要拒绝访问一个特定的子路径(例如/foobar/baz/**),但将其余子路径保持打开状态。是否可以使用 YAML 语法来执行此操作?也许我们需要使用 Fluent API 来实现路由?
我们有一个 Spring Boot (2.1) 应用程序,它使用 Apache Camel (2.24) 从 RabbitMQ 服务器 (3.7.15) 消费。
应用程序似乎正在正确消费(一条消息,因为它们被放置在队列中),但在 RabbitMQ 监视器中,它显示为那些消息被“批量”消费(参见急剧下降然后平坦,即使我们在日志中看到应用程序正在处理消息)。
我们没有设置任何我能看到的“预取”行为。有人可以解释发生了什么吗?为什么队列数没有平滑减少?
java ×2
64-bit ×1
apache-camel ×1
jvm ×1
rabbitmq ×1
spring-boot ×1
spring-cloud ×1
teamcity ×1
windows ×1