我正在尝试通过将由Java类代码组成的jar导入芭蕾舞女演员,并尝试通过.bal文件在Java类中调用构造函数和方法来尝试Ballerina和Java互操作性。
当我运行.bal文件时,这工作得很好。
ballerina run <balfile>
但是,当我运行整个项目模块时,会出现以下异常情况。
enter code here
error: 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文件夹中。
谢谢。
答案 0 :(得分:1)
我认为您已经阅读了指南How to Structure Ballerina Code。使用ballerina build <root-module>
编译Ballerina程序时,编译器会创建一个可执行的jar文件。在这种情况下,芭蕾舞女演员编译器将生成一个自包含的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"]