Re: [equinox-dev] Equinox, PDE and packages from the ExtensionClasspath (e.g. JavaFX)
Am 14.11.12 08:13, schrieb Gunnar Wagenknecht: Am 14.11.2012 01:30, schrieb Neil Bartlett: I really feel that the problem is in the launcher, so that's where it needs to be fixed, i.e. by setting the osgi.parentClassloader=app system property. I agree. So the wrong property is only used if the Equinox is launched using the binary executable or also when launched using java -jar org.eclipse.osgi...? Please note that we can't simply change the launcher to use the ext-classpath because then we'd most likely break other Eclipse plugins! We only change the classpath for a specific fragment. At least this is how I interpreted Tom Watsons suggestion to use the above format. I think the dilema is that anything that requires a fix will make adoption harder because people won't be able to use released versions (eg., Juno) for JavaFX development. Is that correct? Right. I could live with the fact that Juno SR2 introduces support for such a custom header and people are required to use that one - the more eclipse version can be supported the better in general. Tom -- B e s t S o l u t i o n . a tEDV Systemhaus GmbH tom schindl geschäftsführer/CEO eduard-bodem-gasse 5-7/1 A-6020 innsbruck fax ++43 512 935833 http://www.BestSolution.at phone++43 512 935834 ___ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev
Re: [equinox-dev] Equinox, PDE and packages from the ExtensionClasspath (e.g. JavaFX)
On Wed, Nov 14, 2012 at 11:34 AM, Tom Schindl tom.schi...@bestsolution.atwrote: Am 14.11.12 08:13, schrieb Gunnar Wagenknecht: Am 14.11.2012 01:30, schrieb Neil Bartlett: I really feel that the problem is in the launcher, so that's where it needs to be fixed, i.e. by setting the osgi.parentClassloader=app system property. I agree. So the wrong property is only used if the Equinox is launched using the binary executable or also when launched using java -jar org.eclipse.osgi...? Please note that we can't simply change the launcher to use the ext-classpath because then we'd most likely break other Eclipse plugins! I really don't think so. I had a brief chat with Tom W about the reason why Eclipse uses the boot loader as its parent. Apparently it dates back to Eclipse 2.x (pre-OSGi) and conflicts with the Xerces XML parser that was being shipped in Sun JREs around that time. You see the irony, I hope back then it was necessary to avoid exposing Eclipse to non-JSR libraries in the extension loader. Now we WANT to expose Eclipse to non-JSR libraries in the extension loader. You can't have your cake and eat it. Why not try running Eclipse right now with osgi.parentClassLoader=app, and find out what happens? We only change the classpath for a specific fragment. At least this is how I interpreted Tom Watsons suggestion to use the above format. I just don't see how it's possible for the framework to change its own classpath for different fragments. Maybe Tom has some ideas. However I think this solution could come with its own set of plugin breakages, if it even works at all. I think the dilema is that anything that requires a fix will make adoption harder because people won't be able to use released versions (eg., Juno) for JavaFX development. Is that correct? Right. I could live with the fact that Juno SR2 introduces support for such a custom header and people are required to use that one - the more eclipse version can be supported the better in general. Tom -- B e s t S o l u t i o n . a tEDV Systemhaus GmbH tom schindl geschäftsführer/CEO eduard-bodem-gasse 5-7/1 A-6020 innsbruck fax ++43 512 935833 http://www.BestSolution.at phone++43 512 935834 ___ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev ___ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev
Re: [equinox-dev] Equinox, PDE and packages from the ExtensionClasspath (e.g. JavaFX)
I agree that the most simple option is to change the launcher to use the app class loader as the parent classloader. The default for that has been boot for many years. This has provided us with a level of isolation from the extension and application class loaders. We could change the default, but I don't think that has no risk associated with it. I had not thought about the fact that frameworks must fail to install extension bundles with types they do not understand. So it is true that this fragment will fail to install on other frameworks (if they are performing the proper check). In equinox we treat the extension type extclasspath as a special type and for packages exported by such a fragment we delegate class loads to the extension class loader no matter what the parent class loader of the framework is. So it should not matter what the framework's class path is in this case. But don't get me wrong. I would much prefer we did not use this option. In fact I don't even really want to support such a concept of extension system bundle fragments at all in the future since I think it will be difficult to support them if we start running with Java Modularity support in the VM. Even if we do change the default of the framework's parent class loader, we still need a way to configure the system bundle to export the JavaFX packages. Tom From: BJ Hargrave/Austin/IBM@IBMUS To: Equinox development mailing list equinox-dev@eclipse.org, Date: 11/13/2012 04:47 PM Subject:Re: [equinox-dev] Equinox, PDE and packages from the ExtensionClasspath (e.g. JavaFX) Sent by:equinox-dev-boun...@eclipse.org Fragment-Host: system.bundle; extension:=extclasspath Would this extension:=extclasspath cause problems to other OSGi-Implementations like e.g. felix? A compliant framework should reject this manifest since the standard directive does not specify a valid value. If you are thinking of having a non-standard, Equinox-specific value for a standard directive, why not just add an Equinox-specific manifest header or Equinox-specific directive? Fragment-Host: system.bundle; x-appclasspath:=ext This does not sound like it would work in general anyway. What happens when the framework is launched from code whose classpath does not include ext? I assume the option here is either use the bootclasscloader for the parent of the classloader used to load the framework or use the current classloader for the parent of the classloader used to load the framework. -- BJ Hargrave Senior Technical Staff Member, IBM office: +1 386 848 1781 OSGi Fellow and CTO of the OSGi Alliance mobile: +1 386 848 3788 hargr...@us.ibm.com ___ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev inline: graycol.gif___ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev