gpt4 book ai didi

java - 如何在 Eclipse 中使用 BndTools 设置 iPojo?

转载 作者:行者123 更新时间:2023-12-01 06:18:11 25 4
gpt4 key购买 nike

我正在尝试使用 iPojo 注释在 Eclipse 内进行组件声明。问题是,当 bnd-ipojo-plugin 生成 XML 和修改的类时,无法在插件类路径中找到注释。

我在 Eclipse 中遇到如下错误:

During generation of a component on class org.osgi.example.Application, exception java.lang.ClassNotFoundException: org.apache.felix.ipojo.annotations.Bind

我已修改 .bnd 文件以包含“-plugins”属性:

-plugin: org.apache.felix.ipojo.bnd.PojoizationPlugin;use-local-schemas=true;path:="${workspace}/cnf/plugins/org.apache.felix.ipojo-1.10.1.jar;${workspace}/cnf/plugins/org.apache.felix.ipojo.annotations-1.10.1.jar;${workspace}/cnf/plugins/bnd-ipojo-plugin-1.10.1.jar;${workspace}/cnf/plugins/org.apache.felix.ipojo.manipulator-1.10.1.jar"

我的 Eclipse 项目在 BuildPath 中也包含所有 iPojo jar。有没有人有什么建议?或者有没有更好的方法将 iPojo 集成到 Eclipse 中?

编辑 1

我已经完全重建了我的工作区,并将 -plugin-pluginpath 变量移至 build.bnd 文件。

现在看起来像这样:

-pluginpath: ${plugindir}/biz.aQute.repository/biz.aQute.repository-2.1.0.jar,\
${plugindir}/bnd-ipojo-plugin/bnd-ipojo-plugin-1.10.1.jar, \
${plugindir}/org.apache.felix.ipojo/org.apache.felix.ipojo-1.10.1.jar, \
${plugindir}/org.apache.felix.ipojo.annotations/org.apache.felix.ipojo.annotations-1.10.1.jar, \
${plugindir}/org.apache.felix.ipojo.manipulator/org.apache.felix.ipojo.manipulator-1.10.1.jar

-plugin: aQute.bnd.deployer.repository.LocalIndexedRepo;name=Release;local=${workspace}/cnf/releaserepo;pretty=true,\
aQute.bnd.deployer.repository.LocalIndexedRepo;name=Local;local=${workspace}/cnf/localrepo;pretty=true,\
aQute.bnd.deployer.repository.FixedIndexedRepo;name=Bndtools Hub;locations=https://github.com/bndtools/bundle-hub/raw/master/index.xml.gz,\
aQute.lib.deployer.FileRepo;name=Build;location=${workspace}/cnf/buildrepo,\
aQute.lib.deployer.FileRepo;readonly=true;name=iPojo Repo;location=${plugindir}, \
org.apache.felix.ipojo.bnd.PojoizationPlugin;use-local-schemas=true

现在所有错误都消失了,并且构建不会失败。但是,XML 文件仍未生成。除了更改 build.bnd 文件之外还有其他步骤吗?

最佳答案

我遇到了同样的问题,并通过将 bnd-ipojo-plugin 构建为具有所有依赖项的 fat jar 来使其工作。我从这里得到了这个想法:https://groups.google.com/forum/#!topic/bndtools-users/0IqYbXOxn3Q

我获取了源代码并将其添加到 pom.xml 中:

...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
...

然后我将生成的 jar 作为插件添加到 build.bnd 中,如下所示:

-plugin: org.apache.felix.ipojo.bnd.PojoizationPlugin;path:="${workspace}/cnf/plugins/bnd-ipojo-plugin-1.12.1-jar-with-dependencies.jar";use-local-schemas=true

这样就可以正常工作了。

关于java - 如何在 Eclipse 中使用 BndTools 设置 iPojo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18675827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com