Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OSGi/BND:如何从包生成中排除类?_Java_Eclipse_Osgi_Bundle_Bnd - Fatal编程技术网

Java OSGi/BND:如何从包生成中排除类?

Java OSGi/BND:如何从包生成中排除类?,java,eclipse,osgi,bundle,bnd,Java,Eclipse,Osgi,Bundle,Bnd,我有一个包项目(Eclipse),其结构如下: 当我尝试创建包时,我得到一个错误,即存在一些“未解决的引用”。该错误是由内部测试类引起的。如何配置BND以忽略这些类 将测试用例拆分为单独的项目不是一个选项,因为测试用例的粒度要比捆绑包提供的API细得多。在OSGi中进行单元测试的好方法是使用片段。因此,您可以将测试放在一个片段包中,这样您就不会再有这个问题了。此外,测试将访问所有类,而不仅仅是API,因为如果将它们放在一个简单的捆绑包中,情况就是这样。OSGi中单元测试的好方法是使用片段。因此,

我有一个包项目(Eclipse),其结构如下:

当我尝试创建包时,我得到一个错误,即存在一些“未解决的引用”。该错误是由内部测试类引起的。如何配置BND以忽略这些类


将测试用例拆分为单独的项目不是一个选项,因为测试用例的粒度要比捆绑包提供的API细得多。

在OSGi中进行单元测试的好方法是使用片段。因此,您可以将测试放在一个片段包中,这样您就不会再有这个问题了。此外,测试将访问所有类,而不仅仅是API,因为如果将它们放在一个简单的捆绑包中,情况就是这样。OSGi中单元测试的好方法是使用片段。因此,您可以将测试放在一个片段包中,这样您就不会再有这个问题了。此外,测试将访问所有类,而不仅仅是API,因为如果将它们放在一个简单的捆绑包中,情况会是这样的。我假设您的测试类包含在jar捆绑包文件中(不应该是这样的)。检查jar文件的内容并修改包过程,使其不包含测试类(maven构建不包含
src/test/java


当使用m2eclipse打包我的项目时,我有时会注意到这种行为,而从命令行运行maven效果很好。

我假设您的测试类包含在jar包文件中(不应该是这种情况)。检查jar文件的内容并修改包过程,使其不包含测试类(maven构建不包含
src/test/java


当使用m2eclipse打包我的项目时,我有时会注意到这种行为,而从命令行运行maven效果很好。

问题是Eclipse正在将
src/main/java
src/test/java
编译到同一个输出目录中,可能是“bin”,Bnd的工作原理是扫描bin文件夹中编译的.class文件

您可以通过以下步骤解决此问题:

  • 右键单击
    src/test/java
    并选择构建路径>配置输出文件夹

  • 单击“特定输出文件夹”并输入目录名,如
    bin\u tests


  • 现在Eclipse将把测试类编译到一个单独的文件夹中,Bnd将只看到真实的类。

    问题是Eclipse正在将
    src/main/java
    src/test/java
    编译到同一个输出目录中,可能是“bin”,Bnd通过扫描bin文件夹中编译的.class文件来工作

    您可以通过以下步骤解决此问题:

  • 右键单击
    src/test/java
    并选择构建路径>配置输出文件夹

  • 单击“特定输出文件夹”并输入目录名,如
    bin\u tests


  • 现在Eclipse将把测试类编译到一个单独的文件夹中,Bnd将只看到真正的类。

    您使用哪些工具?Maven、m2eclipse和Maven捆绑插件?没有Maven-普通Eclipse。我只接管了源文件结构。在抛弃Maven/M2eclipse之后,因为它非常不稳定——有时成功构建,有时数千个错误,而不改变整个工作区。您使用哪些工具?Maven、m2eclipse和Maven捆绑插件?没有Maven-普通Eclipse。我只接管了源文件结构。在抛弃Maven/M2eclipse之后,因为它非常不稳定——有时成功构建,有时数千个错误,而没有对整个workspace.Works进行任何更改——但在我看来,这更像是BND的一个bug。BND只识别bin文件夹中的类,与项目配置无关。为什么它是BND中的一个bug?正如我所说,Bnd关注的是已编译的类,而不是源代码。Eclipse默认情况下只将所有编译的类放在一个地方,因此Bnd无法知道哪些类是“真实的”,哪些是测试。从我的观点来看,Bnd应该检查项目配置,应该包括/处理所有类输出目录,但它没有。因此,我认为它是一个错误。尽管如此,您的回答还是很有帮助的,问题是项目配置是特定于Eclipse的。如果Bnd使用了这些信息,那么当从命令行、Hudson/Jenkins或NetBeans等运行时,它会做什么?这就是为什么Bnd避免读取它,只从.Bnd文件中获取它的配置。Works-但在我看来,这更像是Bnd的一个bug。BND只识别bin文件夹中的类,与项目配置无关。为什么它是BND中的一个bug?正如我所说,Bnd关注的是已编译的类,而不是源代码。Eclipse默认情况下只将所有编译的类放在一个地方,因此Bnd无法知道哪些类是“真实的”,哪些是测试。从我的观点来看,Bnd应该检查项目配置,应该包括/处理所有类输出目录,但它没有。因此,我认为它是一个错误。尽管如此,您的回答还是很有帮助的,问题是项目配置是特定于Eclipse的。如果Bnd使用了这些信息,那么当从命令行、Hudson/Jenkins或NetBeans等运行时,它会做什么?这就是为什么Bnd避免读取它,只从.Bnd文件中获取它的配置;特别是因为这意味着我必须为我的每个包创建一个片段包。这意味着要做很多新的工作…创建一个新项目不需要很多时间。如果需要,您可以使用某种模板“fragment”项目,并且只更改名称和主机包。在我看来,它完全证明了分离关注点是合理的,并且它简化了l
    src/main/java
       Bundle source files here
    src/test/java
       Bundle internal test cases