我想向捆绑包中添加一个OSGI片段,在这里添加到“org.eclipse.equinox.http.jetty”,并附带清单。mf如下:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: JettyCustomize
Bundle-SymbolicName: com.company.st.console.jetty.customize
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: Company
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Fragment-Host: org.eclipse.equinox.http.jetty
不幸的是,我的代码需要在其他捆绑包中定义的代码,这里是“org.eclipse.jetty.io”。所以我将以下行添加到清单中:
Import-Package: org.eclipse.jetty.io
现在,在Eclipse中,代码可以编译了。但是当我启动应用程序时,我得到了以下异常(MyJettyCustomizer
是fragement中的一个类,由片段主机“org.eclipse.equinox.http.jetty”中的代码每次反射使用):
java.lang.ClassNotFoundException: com.company.st.console.jetty.customize.MyJettyCustomizer cannot be found by org.eclipse.equinox.http.jetty_3.4.0.v20170503-2025
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:484)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.eclipse.equinox.http.jetty.internal.HttpServerManager.createJettyCustomizer(HttpServerManager.java:232)
at org.eclipse.equinox.http.jetty.internal.HttpServerManager.updated(HttpServerManager.java:74)
at org.eclipse.equinox.http.jetty.internal.Activator.start(Activator.java:62)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:779)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:772)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:729)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:933)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:309)
at org.eclipse.osgi.container.Module.doStart(Module.java:581)
at org.eclipse.osgi.container.Module.start(Module.java:449)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1628)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1608)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1579)
at org.eclipse.osgi.container.SystemModule.startWorker(SystemModule.java:264)
at org.eclipse.osgi.container.Module.doStart(Module.java:581)
at org.eclipse.osgi.container.Module.start(Module.java:449)
at org.eclipse.osgi.container.SystemModule.start(SystemModule.java:188)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:383)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:402)
at org.eclipse.osgi.launch.Equinox.start(Equinox.java:115)
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:326)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:239)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
at org.eclipse.equinox.launcher.Main.run(Main.java:1499)
at org.eclipse.equinox.launcher.Main.main(Main.java:1472)
如果我从MyJettyCustomizer中删除需要“org.eclipse.jetty.io”的代码,并从清单中再次删除“Import-Package:org.eclipse.jetty.io”行,那么在运行时没有异常,类MyJettyCustomizer已正确加载。
那么,有没有可能在OSGI片段中使用另一个包中的代码?
我在我的项目中使用了mapstruct,它可以直接工作(所有的mapper都在一个包中)。现在我有了将一个映射器移动到另一个包的要求,但这并不能很好地工作。 你能帮我解决这个问题吗? 编辑包结构1的结果CarMapperImpl.java:
问题内容: 我想从fragmentA调用FragmentB(Class)的方法,我试图通过在fragmentA(class)中创建fragmentb的对象来尝试,但是在这里它不起作用是该类中fragmentA的代码,我有一个方法可以通过FragmentB类的方法 我想称这个为fragmentB的方法 我尝试通过fragmentA方法编写此代码,但出现错误 问题答案: 试试这个解决方案:
我想对包含来自另一个代码VBA的消息框的行进行注释。我正在用库VBA扩展性尝试这一点,但我没有找到解决方案。 欢迎任何帮助。 这是我的代码:
我在Apache Felix中使用ServiceMix,我的企业应用程序由几个捆绑包组成。例如,我有一个带有jpa实体类的捆绑包,另一个带有业务逻辑和道类的捆绑包。因为我使用OpenJPA,实体捆绑包项目需要META-INF文件夹中的persistenc.xml在编译时进行字节码注入,但此捆绑包通过捆绑包清单中的元持久标头提供持久化单元。在道提供捆绑包内,我通过使用blueprint.xml注入实
我试图使用另一个片段中的数据填充我的Listview。 我可以从另一个片段获取数据,但当我尝试创建listview对象时,它返回null。 结果,该应用程序正在崩溃。 我从一个片段中获取用户的数据,然后从另一个片段中调用一个方法来传递数据。我正在第二个方法的poplist()方法中创建listview对象和数组适配器。但是,由于空指针异常,应用程序正在崩溃。请帮忙。 我尝试了以下方法,但不起作用
问题内容: 我在小组活动中有一个片段,我想用另一个片段替换它: 在不使用活动组的情况下作为单独的项目完成时,它工作正常,当控件进入getview()时,每件事在日志猫中都可以正常工作,但是没有视图可见,甚至没有任何异常出现,我希望将书详细信息片段由部分详细信息片段代替。 图书详细信息片段的XML具有id book_description_fragment,而部分描述片段的xml具有id secti