For the most part, Furnace is a black box that hands you objects :) No special ClassLoading knowledge required, really. You can include as much as you want on the OSGi ClassPath and furnace will give you objects just the same (as long as you actually have those types on your class-path.) But I think it's fine if we continue to try to get 1.0 working, I just don't want to deplete your time and energy on this, because I think your time is very valuable :)A few things to know:
- Furnace is just a runtime & container. It handles object instantiation and creates a modular classloading environment that is mostly transparent.
- Anything you take from inside Furnace and use outside, will be a proxy of the actual object. This means that objects and services requested from and passed in to Furnace must be proxy-able.
- Furnace can be started and stopped. Once stopped, you should immediately drop all references and clean up any lingering registries where .class instances might be held (otherwise you will get classloader memory leaks.)
But let's continue with the path we are on. I think that simply adding the spring jars that contain ApplicationContext.class to the OSGi/eclipse classpath will resolve this problem.~LincolnOn Tue, Dec 16, 2014 at 3:35 PM, Ian Tewksbury <itewksbu@redhat.com> wrote:My only worry is I am still not understanding how to correctly leverage forge/furnace to do the class loading properly and trying to do that at the same time as switching APIs could make things even more difficult. In both the new windup I am assuming it has third party jar dependencies, just like windup 1.0 does, so I would run into the same issues. IF you think for some reason the design of 2.0 would be such that I am less likely to be hitting these class loading issues I will just bite the bullet and try and do the switch over at the same time. It would just help my brain a lot if I could get 1.0 working so I have a better baseline of comparison when I then break everything to work with 2.0. I am afraid I wont know whether I am debugging API changes or class loading forge/furnace changes if I am doing both at the same time.From: "Lincoln Baxter, III" <lincolnbaxter@gmail.com>
To: "Windup-dev List" <windup-dev@lists.jboss.org>
Sent: Tuesday, December 16, 2014 1:13:01 PM
Subject: Re: [windup-dev] org.springframework.context.ApplicationContext cannot be found by org.jboss.tools.windup.runtime_3.1.0.qualifierSince windup 2.0 is in no way backwards compatible with Windup 1.0, and the APIs you'll need probably don't exist in Windup 2.0 yet, I suspect that we will be solving unnecessary problems (like seemingly Spring related issues such as this one) by trying to stand up Windup 1 at this point, but that's fine, we can do this first.~LincolnOn Tue, Dec 16, 2014 at 9:49 AM, Ian Tewksbury <itewksbu@redhat.com> wrote:Lincoln,I didn't want to try to bite off more then I can chew at once. Hence I want to make sure I can load windup via forge/furnace before I also try to switch over to using the new windup. If I can load one version with forge then I can load any version. But right now I can't load the version I had working, which means if I tried to switch to loading Windup 2.0 I would be dealing with new API and class loading issues at the same time.So first goal, load windup 1 via forge, once I can see I can do that, then I can switch out for windup 2.I have a hunch about the class loading issues, but I will put that conversation on the forge forum because it seems the best place.Blue Skies,~IanFrom: "Lincoln Baxter, III" <lincolnbaxter@gmail.com>
To: "Windup-dev List" <windup-dev@lists.jboss.org>
Sent: Monday, December 15, 2014 4:22:57 PM
Subject: Re: [windup-dev] org.springframework.context.ApplicationContext cannot be found by org.jboss.tools.windup.runtime_3.1.0.qualifierHey Ian,Glad to see you! Sorry you're having trouble getting this up and running again (as you said, not sure we ever did get it there.)At this point, I would abandon using the Legacy windup codebase. We've long since stopped working on it. My suggestion, now, would be to update to the Windup 2.0.0.Beta6 (or SNAPSHOT) version, and start picking things up from there.As I recall, we weren't ready at the time of your last attempt, to produce a report, or information that you could consume in Eclipse, but I do believe we are at that point now.To answer some of your questions:
- The addon needs to contain any required JARs from libraries that are included. It won't go out and find things on the fly - everything must be bundled.
- The new entry point for Windup is used here in WindupCommand (you should be able to use this as an example): https://github.com/windup/windup/blob/master/ui/src/main/java/org/jboss/windup/ui/WindupCommand.java#L249 -
- You pretty much just need to ask Furnace for instances of:
org.jboss.windup.graph.GraphContextFactory; org.jboss.windup.exec.WindupProcessor; The rest "should" be self explanatory via the example.~LincolnOn Mon, Dec 15, 2014 at 11:56 AM, Ian Tewksbury <itewksbu@redhat.com> wrote:Robb,I am not using it. Windup is attempting to use it as it is loading its rules. This issue is not really spring specfic, spring just happens to be the first JAR that is having issues being loaded. The issue is indicitive of a larger problem. Forge/Furnace is not getting queried when trying to load classes that are in JARs provided by the addon.Blue Skies,~IanFrom: "Robb Greathouse" <robb.greathouse@redhat.com>
To: "Windup-dev List" <windup-dev@lists.jboss.org>
Sent: Monday, December 15, 2014 11:35:34 AM
Subject: Re: [windup-dev] org.springframework.context.ApplicationContext cannot be found by org.jboss.tools.windup.runtime_3.1.0.qualifierHi,Quick question. How do you use springframework in eclipse?
Robb Greathouse
Chief Evangelist
Middleware Business Unit
JBoss, a Division of Red Hat
cellphone 505-507-4906Linconln,
I am trying to get Eclipse to be able to load windup legacy with Forge and have run into the error I think I was running into months ago when I last tried this. The legacy-windup-engine depends on ApplicationContext as a maven dependency but Eclipse/Forage does not seem to be able find the dependency. I have honestly forget how Forge is supposed to work at this point. I thought Forge should automatically be finding all the required dependencies of the jars in the add-on. But maybe I am crazy. Does the addon need to include all the jars that the legacy-windup jars depend on?
Blue Skies,
~Ian
java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
at java.lang.Class.getDeclaredMethods(Class.java:1855)
at org.jboss.forge.furnace.proxy.javassist.util.proxy.SecurityActions.getDeclaredMethods(SecurityActions.java:30)
at org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.getMethods(ProxyFactory.java:1121)
at org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.getMethods(ProxyFactory.java:1098)
at org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.makeSortedMethodList(ProxyFactory.java:803)
at org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.computeSignature(ProxyFactory.java:810)
at org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:398)
at org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback$3.call(ClassLoaderAdapterCallback.java:987)
at org.jboss.forge.furnace.util.ClassLoaders.executeIn(ClassLoaders.java:42)
at org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.enhance(ClassLoaderAdapterCallback.java:900)
at org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.enhanceResult(ClassLoaderAdapterCallback.java:277)
at org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.access$200(ClassLoaderAdapterCallback.java:37)
at org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback$2.call(ClassLoaderAdapterCallback.java:124)
at org.jboss.forge.furnace.util.ClassLoaders.executeIn(ClassLoaders.java:42)
at org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.invoke(ClassLoaderAdapterCallback.java:96)
at org.jboss.windup.WindupFactory_$$_javassist_ffb85582-a284-4183-a727-6db372ddc32c.createWindupEngine(WindupFactory_$$_javassist_ffb85582-a284-4183-a727-6db372ddc32c.java)
at org.jboss.tools.windup.core.WindupService.getWindupEngine(WindupService.java:391)
at org.jboss.tools.windup.core.WindupService.getWindupReportEngine(WindupService.java:412)
at org.jboss.tools.windup.core.WindupService.generateReport(WindupService.java:250)
at org.jboss.tools.windup.core.WindupService.generateReport(WindupService.java:186)
at org.jboss.tools.windup.ui.internal.commands.GenerateWindupReportHandler$1.run(GenerateWindupReportHandler.java:78)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext cannot be found by org.jboss.tools.windup.runtime_3.1.0.qualifier
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 24 more
_______________________________________________
windup-dev mailing list
windup-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/windup-dev
_______________________________________________
windup-dev mailing list
windup-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/windup-dev
_______________________________________________
windup-dev mailing list
windup-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/windup-dev--
_______________________________________________
windup-dev mailing list
windup-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/windup-dev
_______________________________________________
windup-dev mailing list
windup-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/windup-dev--
_______________________________________________
windup-dev mailing list
windup-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/windup-dev
_______________________________________________
windup-dev mailing list
windup-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/windup-dev--
_______________________________________________
windup-dev mailing list
windup-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/windup-dev