Ballerina java.lang.ClassNotFoundException在运行模块/项目时



我正在尝试Ballerina和Java互操作性,方法是将一个由Java类代码组成的jar导入到Ballerina中,并尝试通过.bal文件调用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:Userscceackhjava_ballerina_interopballerina_interop>

我已经将jar文件保存在BallerinaHome/didistributions/bre/lib文件夹中。

谢谢。

我想您已经阅读了指南How to Structure Ballerina Code。使用ballerina build <root-module>编译Ballerina程序时,编译器会创建一个可执行的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"]

最新更新