【问题标题】:How to import a class from a different package in a groovy file如何从 groovy 文件中的不同包中导入类
【发布时间】:2021-03-18 05:03:37
【问题描述】:

我有一个 gradle 文件,其根目录设置为(来自 settings.gradle 文件)

rootProject.name = 'PackageX'

在 groovy 测试中,我试图访问不同包中的类。

    def setup(){
        mapper = new DynamoDBMapper(dynamoDb)
        DynamoDBTableMapper<?, ?, ?> amazonDynamoDBMapper = mapper.newTableMapper(Entity.class)
    }

这里的 Entity.class 在“PackageY”中,因此我收到了错误

无法解析 com.mainpackage.sub1.sub2.PackageY.sub11.sub12 类。

使用以下行添加导入语句会导致无法解决错误

import com.mainpackage.sub1.sub2.PackageY.sub11.sub12.sub13.Entity

Entity.class 上面的包声明是

package com.mainpackage.sub1.sub2.PackageY.sub11.sub12.sub13

文件夹结构是这样的

| -PackageY
|  -src
|   -main
|    -java
|     -com.mainpackage.sub1.sub2.PackageY
|      -sub11
|       -sub12
|        -sub13
|         -Entity.java

有人可以建议在 groovy 测试用例中访问跨包类文件的正确方法是什么。

【问题讨论】:

  • 您是在尝试导入 Entity.java 还是 Entity.class?它位于 jar 中还是仅在文件夹中?你是如何开始 groovy 的?您是否将带有实体的 jar/文件夹放入 groovy 脚本的类路径中? Entity.jar 中声明了什么包?
  • "您要导入 Entity.java 还是 Entity.class?" - 在 Java 和 Groovy 中,没有导入 .java 文件这样的事情。您只能导入类(以及类,如接口、记录、枚举等)。您无法导入 .java 文件。

标签: java gradle groovy


【解决方案1】:

这里 Entity.class 在 'PackageY' 中

如果Entity 位于名为PackageY 的包中,那么您需要通过其完全限定名称PackageY.Entity 来引用该类,或者在您自己的包语句之后的文件顶部提供适当的导入语句。该导入语句可以是import PackageY.Entityimport PackageY.*

请注意,包名包含大写字母是不标准的,而以大写字母开头则更不标准。

更新

问题已更新,表明Entitycom.mainpackage.sub1.sub2.PackageY.sub11.sub12.sub13 包中,因此我上面提到的导入语句将是import com.mainpackage.sub1.sub2.PackageY.sub11.sub12.sub13.*import com.mainpackage.sub1.sub2.PackageY.sub11.sub12.sub13.Entity

【讨论】:

  • 无法从包 X 中解析导入语句。我更新了问题。请检查。
  • 您能告诉我Entity.java 顶部附近的package 语句以及Entity.java 所在的源目录路径吗?
猜你喜欢
  • 1970-01-01
  • 2016-02-19
  • 2019-12-30
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
相关资源
最近更新 更多