首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行模块/项目时的Ballerina java.lang.ClassNotFoundException

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

Stack Overflow用户
提问于 2020-03-06 22:54:01
回答 1查看 208关注 0票数 1

我正在尝试通过将由Java类代码组成的jar导入到Ballerina中,并尝试通过.bal文件调用Java类中的构造函数和方法,从而尝试ballerina和java互操作性。

当我运行.bal文件时,它工作得非常好。

代码语言:javascript
复制
ballerina run <balfile>

然而,当我运行整个项目模块时,它给了我下面的异常。

代码语言:javascript
复制
enter code here
代码语言:javascript
复制
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文件夹中。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 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文件依赖项。

代码语言:javascript
复制
[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>"]
代码语言:javascript
复制
[platform] 
target = "java8" 

[[platform.libraries]] 
    path = "./javalibs/mysql-connector-java-<version>.jar" 
    modules = ["ordermgt"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60566542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档