【问题标题】:The default package '.' is not permitted by the Import-Package syntax默认包“。” Import-Package 语法不允许
【发布时间】:2016-01-28 11:10:18
【问题描述】:

尝试使用 Intellij IDEA 运行 @org.junit.Test。

这是一个 OSGi 包,当点击 Run 'testMyTest'

得到以下异常:

Error:osgi: [b2b-bundle] The default package '.' is not permitted by the Import-Package syntax. 
    This can be caused by compile errors in Eclipse because Eclipse creates 
    valid class files regardless of compile errors.
    The following package(s) import from the default package null

有人可以分享一下这个例外吗?

谢谢, 彼得

【问题讨论】:

  • 是的,一直在谷歌上搜索找到了几篇关于它的博客文章。当我进行全新安装时,它可以工作,在 eclipse 中它可以工作,在 intellij 中它不...不使用 jdom

标签: java intellij-idea osgi aem


【解决方案1】:

您可能没有将您的课程放在一个包中。

添加

package your_package_name;

在你的 .java 文件的顶部,你应该很好。

PS:根据您的软件包名称,您可能还需要将文件移动到其他位置

【讨论】:

    【解决方案2】:

    根据我对 OSGi 库的了解,.class 文件不应该是 b/c,因为这个库的结构方式在根包中有 deps。

    查看this 博客可以获得更多详细信息。

    【讨论】:

    • 这个bundle在它的依赖声明下有143个Bundle,它也没有使用JDom...
    • 我知道博客中显示的特定示例使用了 JDom,但本质上您也有同样的问题。您的依赖项的位置有问题。添加更多错误输出,以便于分析。
    • 哦,你明白了吗? NVM 但是是的,因为剩下的 .class 文件弄乱了你的构建,我猜“全新安装”会解决问题,哈哈。
    【解决方案3】:

    我在删除“target”中的“classes”、“obr”和“\container\tomcat8x\cargo-confluence-home”文件夹后进行了修复,然后只运行 atlas-package

    【讨论】:

      【解决方案4】:

      在 aQute.bnd.osgi.Descriptors.PackageRef 的类构造函数中添加条件断点 (binaryName.equals(".");) 并检查哪个依赖项造成问题。

      【讨论】:

        【解决方案5】:

        由于https://github.com/bndtools/bnd/issues/1848,也可能出现此错误消息,其中 bnd.bnd 文件有一个指令,例如这个:

        Bundle-Activator: ${classes;IMPLEMENTS;org.osgi.framework.BundleActivator}
        

        如果没有实现 BundleActivator 的类,那么令人困惑的是,BND 会打印该错误。

        【讨论】:

          【解决方案6】:

          在我的例子中,它是 JDOM 插件。当前接受的答案中链接的博客 [1] 中的解决方案听起来很合理。通过一些神秘的 pom.xml Maven 魔法从 JDOM 中删除顶级类。

          原来我错误地拉动了 JDOM,因为我错误地声明了对 maven-bundle-plugin 的依赖。我将它放入我的<dependencies>,而不是放入<build><pluginManagement>。该插件依赖于 JDOM,我正在捆绑传递依赖项。修复我的依赖声明清除了问题。

          [1]https://techotom.wordpress.com/2014/10/21/fixing-the-default-package-is-not-permitted-by-the-import-package-syntax-with-maven-bundle-plugin/

          【讨论】:

            【解决方案7】:

            可能存在导致该错误的依赖项(使用默认包)。你应该找到它。

            就我而言,我在为打包插件执行“atlas-package”时接受了此类错误。

            在我的例子中,这是一个依赖:

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>4.1.6.RELEASE</version>
            </dependency>
            

            很高兴,这并不重要,所以我将其删除。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-10-16
              • 2019-08-16
              • 2014-10-11
              • 2016-08-12
              • 1970-01-01
              • 2016-09-06
              • 2016-01-28
              • 2013-02-03
              相关资源
              最近更新 更多