我正在研究的Ballerina项目的结构如下。
.
Ballerina.toml
LICENSE
README.md
ballerina-internal.log
ballerina.conf
contributions_from_outsiders_log
org
└── wso2
└── contributions_from_outsiders
├── ballerina-internal.log
├── const.bal
├── database_client.bal
├── gmail_client.bal
└── structs.bal
weekly_mail_notifier.bal
我的Ballerina.toml文件的内容为:
[project]
org-name = "pasanwijesinghe"
version = "0.0.1"
我正在尝试使用contributions_from_outsiders
中weekly_mail_notifier.bal
中的函数
import org.wso2.contributions_from_outsiders;
function main (string[] args) {
contributions_from_outsiders:generateMailBody();
}
建筑出现以下错误
Compiling source
weekly_mail_notifier.bal
invalid organization name recieved: '$anon'. organization name should be lowercase and alphanumeric, underscore is can be used. should be less than 256 characters.
error: ./weekly_mail_notifier.bal:17:1: cannot resolve package 'org.wso2.contributions_from_outsiders'
pasanwijesinghe/org:0.0.1
error: ./weekly_mail_notifier.bal:24:5: undefined package 'contributions_from_outsiders'
error: ./weekly_mail_notifier.bal:24:5: undefined function 'generateMailBody'
ballerina: compilation contains errors
答案 0 :(得分:4)
您在weekly_mail_notifier.bal
中作为包导入语句给出的内容是错误的。 import package语句的格式应为<organization-name>/<package-name>
。根据您的项目结构,组织名称为“ pasanwijesinghe”,它是从Ballerina.toml文件派生的,而程序包名称在此处为“ org”。 “ org”是从项目源所在的第一个目录派生的。在芭蕾舞演员项目中,所有顶级目录都将被视为一个包。因此正确的导入语句将是:
import pasanwijesinghe/org;
function main (string[] args) {
org:generateMailBody();
// rest of the program
}
在这里,我假设您的项目中有一个函数generateMailBody
,该函数在任何目录下的任何芭蕾舞者源文件中定义。有关芭蕾舞演员包装和结构的更多信息,请参见:https://ballerina.io/learn/how-to-structure-ballerina-code/#packages