java - 从 jar 内的文件中发出解码对象

标签 java jaxb azure-application-insights

我正在尝试将 Microsoft Application Insights 与我的 Spring Boot 应用程序一起使用。

它使用 JAXB 使用以下代码从 ApplicationInsights.xml(存储在/java/main/resources 中)加载 xml 配置:https://github.com/Microsoft/ApplicationInsights-Java/blob/master/core/src/main/java/com/microsoft/applicationinsights/internal/config/JaxbAppInsightsConfigurationBuilder.java

通过 gradle 运行 spring boot 应用程序时效果很好(因为资源存在于普通文件系统中)。

但是,如果我为此项目创建一个 jar 文件并尝试运行它,则会看到以下错误:

javax.xml.bind.UnmarshalException
 - with linked exception:
[java.io.FileNotFoundException: C:\Users\u\Code\ExperimentationService\file:\C:\Users\u\Code\ExperimentationService\build\libs\experimentationService-0.1.0.jar!\ApplicationInsights.xml (The filename, directory name or volume label syntax is incorrect)]

我在 Linux 环境中运行时也遇到了同样的问题。

我可以做些什么来使 xml 文件可供解码器使用,还是需要在 Application Insights 的 sdk 中更改此内容?

最佳答案

这看起来像是 SDK 中的一个错误。我使用调试器单步调试了 SDK 代码,它实际上在 jar 中找到了该文件,只是无法读取它(如 this question 所示,它不存在于文件系统上,而是存在于 jar 中)。

同时您可以尝试的一件事是将 XML 文件放在与 jar 相同的目录中(SDK 将检查它是否有配置文件)。我碰巧认识 AppInsights 团队 - 我会跟进他们,看看我们是否可以发布修复程序。当我了解更多信息后将编辑问题。

编辑:

我与 AppInsights Java SDK 团队进行了交谈。该错误已修复,新版本应该会在下周发布。

编辑:

这是 PR:https://github.com/Microsoft/ApplicationInsights-Java/pull/257

关于java - 从 jar 内的文件中发出解码对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31789083/

相关文章:

spring - 如何定义模型以在没有根元素名称的情况下解码发布数据

Java Spring Web 服务客户端故障处理

java - 同时运行 2 个增强的 for 循环

java - 在企业系统中使用异步方法

web-services - SOAPHandler 中的 JAX-WS handleMessage 未被调用

node.js - 将请求 header 添加到 Node 中的 Azure Application Insights 事件

azure - 如何确定Azure中应用程序服务计划CPU百分比100%的原因?

asp.net - Application Insights 日志中的随机值 "Called asynchronously"

java - 如何动态引用 daraja API mpesa xpress 请求中的结账 RequestId

java - glassfish 如何对所有应用程序使用一个 jar 文件 - CDI