默认包'。' Import-Package语法不允许

时间:2015-10-28 15:27:21

标签: java intellij-idea osgi cq5

尝试使用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

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

谢谢, 彼得

7 个答案:

答案 0 :(得分:3)

你可能没有把你的班级放在一个包里。

添加

package your_package_name;

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

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

答案 1 :(得分:2)

根据我对OSGi库.class文件的理解,它们不应该是这个库的结构方式,根包中有deps。

查看this博客会产生更多细节。

答案 2 :(得分:1)

我删除了#34;类"," obr"和" \ container \ tomcat8x \ cargo-confluence-home"文件夹里面"目标"然后只运行atlas-package

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

并且当没有实现BundleActivator的类时,令人困惑的是,BND会打印出该错误。

答案 5 :(得分:0)

就我而言,它是JDOM插件。在当前接受的答案中链接的博客[1]的解决方案听起来很合理。通过一些神秘的pom.xml Maven magic从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/

答案 6 :(得分:0)

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

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

在我看来,这是一个依赖项:

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

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