Ballerina - 使用带有依赖项的 Java 库

问题描述 投票:0回答:1

我想在 Ballerina 中使用 Java Kubernetes API 客户端

我已阅读这个这个这个

基于 Java 的依赖关系唯一存在问题的地方是 this

如果稍后需要这些类之一,则可以重新运行 Bindgen 工具以生成 Ballerina 绑定的完整实现。

  • 如何重新运行它?使用与初始运行
    bal bindgen
    相同的 CLI 选项?
  • 我如何告诉已经存在的 Kubernetes 客户端 Java 绑定,这些依赖项是为它们准备的?
  • 如何告诉
    bal bindgen
    使用每个依赖项的新
    bal bindgen
    结果填充存根依赖项类?
  • 我如何告诉
    bal bindgen
    不需要特定的类名,但至少接受带有通配符的包前缀,以包含该包的所有类?

这是我运行的

bal bindgen
CLI 行。

bal bindgen -mvn io.kubernetes:client-java:18.0.1 --with-optional-types-param --with-optional-types-return --public --output "${path_output}" org.yaml.snakeyaml.Yaml java.io.FileInputStream java.io.InputStream java.util.Map

这些课程取自教程作为测试。

这是

bal bindgen
运行的输出。

Resolving maven dependencies...

Updated the `Ballerina.toml` file with the new platform libraries.

The following JARs were added to the classpath:
        slf4j-api-2.0.6.jar
        google-http-client-gson-1.42.3.jar
        google-auth-library-credentials-1.16.0.jar
        guava-31.0.1-android.jar
        accessors-smart-2.4.2.jar
        oauth2-oidc-sdk-9.4.jar
        nimbus-jose-jwt-9.8.1.jar
        error_prone_annotations-2.16.jar
        bcutil-jdk18on-1.72.jar
        content-type-2.1.jar
        google-auth-library-oauth2-http-1.16.0.jar
        okhttp-4.10.0.jar
        commons-lang3-3.12.0.jar
        commons-collections4-4.4.jar
        gson-fire-1.8.5.jar
        httpcore-4.4.15.jar
        simpleclient_common-0.15.0.jar
        j2objc-annotations-1.3.jar
        opencensus-api-0.31.1.jar
        javax.annotation-api-1.3.2.jar
        commons-codec-1.15.jar
        client-java-proto-18.0.1.jar
        annotations-13.0.jar
        lang-tag-1.5.jar
        json-smart-2.4.2.jar
        logging-interceptor-4.10.0.jar
        okio-jvm-3.0.0.jar
        httpclient-4.5.13.jar
        adal4j-1.6.7.jar
        listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
        client-java-api-18.0.1.jar
        kotlin-stdlib-jdk8-1.6.10.jar
        commons-logging-1.2.jar
        jcip-annotations-1.0-1.jar
        simpleclient_tracer_otel_agent-0.15.0.jar
        commons-io-2.11.0.jar
        swagger-annotations-1.6.9.jar
        simpleclient_tracer_common-0.15.0.jar
        asm-8.0.1.jar
        bcpkix-jdk18on-1.72.jar
        simpleclient_tracer_otel-0.15.0.jar
        google-http-client-1.42.3.jar
        client-java-18.0.1.jar
        simpleclient_httpserver-0.15.0.jar
        jose4j-0.9.3.jar
        checker-qual-3.12.0.jar
        opencensus-contrib-http-util-0.31.1.jar
        kotlin-stdlib-common-1.5.31.jar
        bcprov-jdk18on-1.72.jar
        gson-2.10.1.jar
        failureaccess-1.0.1.jar
        kotlin-stdlib-1.6.20.jar
        auto-value-annotations-1.10.1.jar
        jsr305-3.0.2.jar
        protobuf-java-3.22.0.jar
        simpleclient-0.15.0.jar
        checker-compat-qual-2.5.5.jar
        grpc-context-1.27.2.jar
        kotlin-stdlib-jdk7-1.6.10.jar
        commons-compress-1.22.jar
        snakeyaml-2.0.jar

Generating bindings for: 
        java.util.Map
        java.io.FileInputStream
        org.yaml.snakeyaml.Yaml
        java.io.InputStream
        java.lang.Object

Generating dependency bindings for: 
        org.yaml.snakeyaml.introspector.BeanAccess
        java.util.function.BiFunction
        org.yaml.snakeyaml.DumperOptions$FlowStyle
        org.yaml.snakeyaml.constructor.BaseConstructor
        java.util.function.Function
        java.lang.Iterable
        org.yaml.snakeyaml.DumperOptions
        org.yaml.snakeyaml.nodes.Node
        java.util.function.BiConsumer
        org.yaml.snakeyaml.resolver.Resolver
        java.io.OutputStream
        java.util.Map$Entry
        java.util.Iterator
        java.util.Collection
        java.util.Set
        org.yaml.snakeyaml.LoaderOptions
        java.io.Reader
        org.yaml.snakeyaml.nodes.Tag
        java.io.File
        java.util.List
        java.io.FileDescriptor
        java.io.Writer
        org.yaml.snakeyaml.representer.Representer
        java.lang.Class
        org.yaml.snakeyaml.TypeDescription
        java.util.regex.Pattern
        java.nio.channels.FileChannel
kubernetes code-generation ffi ballerina bindgen
1个回答
0
投票

如何重新运行它?

如果您需要重新运行bindgen命令来生成一个或多个依赖类的完整实现,如here所述,您可以通过运行初始命令并在末尾附加新类来实现。该工具将在必要时替换修改后的绑定文件。

我如何告诉已经存在的 Kubernetes 客户端 Java 绑定,这些依赖项是为它们准备的?

重新运行命令后,无需将新生成的依赖项绑定显式链接到已存在的依赖项绑定。如上所述,该工具会在再生过程中自动处理它。

如何告诉 bal bindgen 使用每个依赖项的新 bal bindgen 结果填充存根依赖项类?

为此,您必须在 bindgen 命令中显式手动指定每个依赖项类(您想要为其生成完整实现)的限定名称。

如何告诉 bal bindgen 不需要特定的类名,但至少接受带有通配符的包前缀,以包含该包的所有类?

bindgen 工具不支持使用通配符指定包前缀来包含该包的所有类。该工具旨在允许 Ballerina 开发人员通过生成库的公共 API 的绑定,在其代码中重用现有的 Java 库。通常,您只需要您想要在 Ballerina 程序中访问的 Java API 的完整桥接代码,并且该工具的默认行为是将其他类保留为依赖类。建议使用这种方法以避免增加复杂性和编译时间。

© www.soinside.com 2019 - 2024. All rights reserved.