Newbie / Ballerina Build with gson issue while 运行 build

Newbie / Ballerina Build with gson issue while running the build

我是芭蕾舞女演员的新手。 我将平台库作为可执行 jar 导入,这是 java 使用 openstack swift api 使用 jclouds.

中的互操作方法调用

JCLOUDS 存在一个已知问题,由于高于 2.5 的 gson 版本问题与 jclouds 不兼容,因此无法构建 .

尝试从在 ballerina 构建期间构建的 bal 文件执行此 inter op 方法调用时,我遇到了同样的错误。在检查 ballerina 在项目构建期间创建的 jar 后,它表明该 jar 是使用一组预构建的依赖项与 gson 2.7 创建的。

有什么办法可以改变这种依赖性,我也不太清楚 ballerina 在 bal 文件的构建阶段如何打包所有这些 jars。

详细了解调用 ballerina build 时幕后发生的事情会有所帮助。

以下 GitHub 问题解释了为什么我们必须将 com.google:gson:2.7 与任何 Ballerina 可执行 jar 打包在一起。

https://github.com/ballerina-platform/ballerina-lang/issues/17878

让我试着解释为什么 Ballerina 编译器将一些第三方 jar 与为您的 Ballerina 程序创建的可执行 jar 打包在一起。我们可以将这些第三方 jar 分为两大类。

  1. Ballerina 运行时的 Jar 依赖项
  2. 您在程序中导入的每个 Ballerina 模块的 Jar 依赖项。

Ballerina 运行时的依赖项

每个 Ballerina 可执行程序都包含 Ballerina 运行时 - 执行任何 Ballerina 程序所需的 JVM 之上的最低限度层。运行时包含 Java Ballerina 值、类型、lang lib 中的 Ballerina 模块的实现,以及运行时类型检查器逻辑。该层对于在 JVM 之上强制执行 Ballerina 语言语义至关重要。

目前,Ballerina 运行时依赖于许多第三方 Java 库。 GSON 就是这样一个库,我们计划很快将其删除。您可以从上述问题中获得更多详细信息。

Ballerina 模块的依赖项

每个 Ballerina 模块,无论它是否属于 standard library or whether you pulled it from the Ballerina central,都可能依赖于一个或多个第三方 Java 库。 Ballerina 模块作者在他们开发 Ballerina 模块的项目的 Ballerina.toml 中列出了这些依赖项。这里有些例子。

当我在研究这个答案时,我意识到需要一个调试工具来发出第三方库的详细信息。如果这个工具可以集成到 ballerina 命令行工具中就好了。这是我为跟踪此问题而创建的问题。

https://github.com/ballerina-platform/ballerina-lang/issues/20116

升级到 jclouds 2.2.0 是否解决了您的症状?它包括 JCLOUDS-1500 将 gson 依赖项升级到 2.8.5。