我正在尝试通过将由Java类代码组成的jar导入到Ballerina中,并尝试通过.bal文件调用Java类中的构造函数和方法,从而尝试ballerina和java互操作性。
当我运行.bal文件时,它工作得非常好。
ballerina run <balfile>然而,当我运行整个项目模块时,它给了我下面的异常。
enter code hereerror: java.lang.NoClassDefFoundError message=com/example/wrapperpackage/Wrapper cause=error java.lang.ClassNotFoundException message=com.example.wrapperpackage.Wrapper
at cceackh.implementation:wrapperconstructor(java-test.bal:14)
cceackh.implementation:main(java-test.bal:42)
PS C:\Users\cceackh\java_ballerina_interop\ballerina_interop>我已经将jar文件保存在BallerinaHome/distributions/bre/lib文件夹中。
谢谢。
发布于 2020-03-07 02:18:44
我假设您已经阅读了How to Structure Ballerina Code指南。当您使用ballerina build <root-module>编译芭蕾舞程序时,编译器会创建一个可执行的jar文件。在这种情况下,Ballerina编译器会生成一个自包含的jar文件。
如果您在Ballerina中使用Java互操作性,则需要在Ballerina.toml文件中指定所有jar文件,以便编译器可以将它们打包到可执行的jar文件中。
下面是如何在Ballerina.toml中指定jar文件依赖项。
[platform]
target = "java8"
[[platform.libraries]]
# Absolute or relative path to the jar file
path = "<path-to-jar-file-1>"
# A comma-separated list of Ballerina module names that depends on this jar
modules = ["<ballerina-module-1>"]
[[platform.libraries]]
path = "<path-to-jar-file-2>"
modules = ["<ballerina-module-1>","<ballerina-module-2>"][platform]
target = "java8"
[[platform.libraries]]
path = "./javalibs/mysql-connector-java-<version>.jar"
modules = ["ordermgt"]https://stackoverflow.com/questions/60566542
复制相似问题