Mailing List webobjects-dev@wocommunity.org Message #481
From: Aaron Rosenzweig <aaron@chatnbike.com>
Subject: Re: [WO-DEV] ERJars collision with 3rd party jar
Date: Sun, 15 Oct 2023 09:21:45 -0400
To: WebObjects & WOnder Development <webobjects-dev@wocommunity.org>
Ah I see. You got it to work in Eclipse for a sample starter project but not int he real project where you needed it! Glad you figured out how to rebuild ERJars by including the Twilio provided jars you needed and are good to go :-)

On Oct 15, 2023, at 7:19 AM, Markus Ruggiero (rucotec) <markus.ruggiero@rucotec.ch> wrote:

Thanks all for your help.

I ended up patching ERJars. Seems to work and I have not yet found any issues.

Aaron,
No Jenkins/Hudson involved, just plain conventional local ant build.
The problem was / is that when I create a new Wonder application ERJars is included automatically but seems to be injected into the class path after the added twilio jar. Then things work. However my real app uses tons of other Wonder frameworks as well as a couple locally built Wonder based company specific frameworks (which might include AND EXPORT stuff that interferes here) . In this scenario when building the final product ERJars is injected at least partially further up in the class path shadowing the 3rd party included classes.
Twilio provides 2 pre-built jars, one with the Twilio stuff only and one that includes all dependencies. I tried both and had all kind of issues. Twilio only of course misses the dependencies whereas Twilio with its various dependencies seems to become “scattered” around the class path and at least partially ends up below ERJars.
So I put the stuff Twilio depends on into ERJars which seems to work now🤞.

Yeah, Maven is the way to go but most probably wouldn’t have helped in this scenario.

On 14 Oct 2023, at 02:07, Aaron Rosenzweig <aaron@chatnbike.com> wrote:

Hi Markus, 

Maven isn’t a silver bullet, you don’t have to go to it at this moment and doing so may not solve your issues anyway. If you have some code that uses an old API and other code that uses a newer API you will be in a pickle. 

I didn’t fully understand what you said. On the one hand, you were able to get the twillio jar loaded first in Eclipse and things were good. Then you said no matter how you rearrange, it didn’t work. So which is it? Could you rearrange or not? 

Perhaps you are saying that within Eclipse you can rearrange and get things to work… and maybe in Jenkins/Hudson (if you are using that) you can’t get it to build. I don’t know, I’m only guessing. If this is indeed the case then maybe in the short term you can build the .woa from Eclipse and upload that until you fix Jenkins. 

Hope you get it figured out. It must be very frustrating. 

On Oct 12, 2023, at 5:14 PM, Markus Ruggiero (rucotec) <markus.ruggiero@rucotec.ch> wrote:

I have a big (?) problem.

We have a rather complex Wonder app built from several custom frameworks and a ton of Wonder frameworks. That’s all good so far. But now I need to include a 3rd party jar for sending out SMS/text (twilio.com). I created a simple out-of-the-box Wonder application and included that jar as a library. The app includes the standard ERJar framework. When I run the app I get a crash because the twilio lib makes a call to some Apache httpclient stuff that does not exist in ERJar (it is obviously newer). I can get a built jar including all dependencies from twilio. Adding this to my project instead of the “naked” one I still get the same crash. BUT reordering the class path in Eclipse so that twilio lib comes before ERJars makes everything work.

So I tried to include that complete twilio jar into my big Wonder App. But no matter what I do, I always get the crash that something in httpclient cannot be resolved. Dumping java.class.path clearly shows that ERJar is before my library, not matter how I try to rearrange the class path. So it seem that in my complex setup with included other custom frameworks ERJar is always moved further up and thus shadows the newer classes (why does this not happen with the initial simple Hello World app?)

How can I resolve this class path issue? All my projects are still ant-based. 

Please don’t tell me to switch to maven! I simply do not have the time to convert everything. I started to read up on maven but then urgent issues and required new functionality took all my time away. And as long as I could make things work easily there was no need to go maven. So for the sake of my schedule I really hope there is a way to get that stuff working in my ant setup, at least for the time being.

Any ideas?
Thanks a lot
---markus---





Subscribe (FEED) Subscribe (DIGEST) Subscribe (INDEX) Unsubscribe Mail to Listmaster