芭蕾舞女演员项目将不会导入包并给出编译错误

时间:2018-09-27 09:31:29

标签: ballerina

我正在研究的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_outsidersweekly_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

1 个答案:

答案 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