我想在 Ballerina 中使用 Java Kubernetes API 客户端。
基于 Java 的依赖关系唯一存在问题的地方是 this。
如果稍后需要这些类之一,则可以重新运行 Bindgen 工具以生成 Ballerina 绑定的完整实现。
bal bindgen
相同的 CLI 选项?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
如何重新运行它?
如果您需要重新运行bindgen命令来生成一个或多个依赖类的完整实现,如here所述,您可以通过运行初始命令并在末尾附加新类来实现。该工具将在必要时替换修改后的绑定文件。
我如何告诉已经存在的 Kubernetes 客户端 Java 绑定,这些依赖项是为它们准备的?
重新运行命令后,无需将新生成的依赖项绑定显式链接到已存在的依赖项绑定。如上所述,该工具会在再生过程中自动处理它。
如何告诉 bal bindgen 使用每个依赖项的新 bal bindgen 结果填充存根依赖项类?
为此,您必须在 bindgen 命令中显式手动指定每个依赖项类(您想要为其生成完整实现)的限定名称。
如何告诉 bal bindgen 不需要特定的类名,但至少接受带有通配符的包前缀,以包含该包的所有类?
bindgen 工具不支持使用通配符指定包前缀来包含该包的所有类。该工具旨在允许 Ballerina 开发人员通过生成库的公共 API 的绑定,在其代码中重用现有的 Java 库。通常,您只需要您想要在 Ballerina 程序中访问的 Java API 的完整桥接代码,并且该工具的默认行为是将其他类保留为依赖类。建议使用这种方法以避免增加复杂性和编译时间。