> Is it possible that ajc launches the APT process from a different point
than javac?

I don't know how javac invokes APT. I suspect they probably are different
because the spec will only say what APT has to do, not when to do it.

cheers,
Andy

On 24 September 2014 08:03, Eric B <ebenza...@gmail.com> wrote:

> Hi Andy,
>
> Just to keep you updated, I managed to get a debug session working with a
> remote debugger.  Indeed, I had incorrectly jarjar'ed the aj lib, and once
> I re jarjar'ed it, I got lombok to recognize it.  Unfortunately though, it
> still is not lombok'ing.
>
> That being said, I'm having a lot of difficulty in debugging the lombok
> code.  It uses a bunch of jdt libs to compile, but they aren't the actual
> ones being used during the debug process (I presume it is using different
> versions), so stepping through code is a nightmare as the source lines
> don't actually match up with the remote process being debugged.  I have to
> dig around a little more there and see if I can find out why.
>
> In the meantime, I've posted some questions to the lombok list hoping
> others can point me in a helpful debug process, but so far am awaiting a
> response.
>
> The only thing I noticed from a quick look is the entry point into the
> lombok lib from ajc and from javac seem to be from two different places.
> Is that possible?  Lombok process gets bootstrapped  via APT (from what I
> can tell).  Is it possible that ajc launches the APT process from a
> different point than javac?
>
> Thanks,
>
> Eric
>
>
> On Fri, Sep 19, 2014 at 10:00 PM, Eric Benzacar <e...@benzacar.ca> wrote:
>
>> Thanks - that'll give me something to play with over the weekend if I get
>> some time.   It never occurred to me to try remote debugging on a local
>> process.  Will give that a shot as well.
>>
>> I'll keep you posted on my results.
>>
>> Thanks,
>>
>> Eric
>>
>> On Fri, Sep 19, 2014 at 4:19 PM, Andy Clement <andrew.clem...@gmail.com>
>> wrote:
>>
>>> The three jars are supersets of one another. If you jarjar aspectjtools
>>> and just use that, it has everything in (including weaver/runtime). In fact
>>> the compiler classes are only in aspectjtools.
>>>
>>> For debugging, can you just use JVM remote debugging? Set that -Xdebug
>>> etc when launching (or in JVM_OPTS if using a script) and then attach the
>>> eclipse debugger to it?
>>>
>>> > [WARNING] You aren't using a compiler supported by lombok, so lombok
>>> will not work and has been disabled.
>>> > Your processor is:
>>> org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.BatchProcessingEnvImpl
>>>
>>> That does sound like jarjar didn't behave. Did you 'jar -tvf' your jar
>>> and check everything had been changed back to org.eclipse.jdt?
>>>
>>> In theory it would also be possible to build an AspectJ package that
>>> included those additional bundles lombok wants from eclipse, and jarjar
>>> those too so the prefixes are all in agreement
>>> (org.aspectj.org.eclipse.jdt).  Then once that package name was supported
>>> throughout lombok it ought to all work - that is probably what would need
>>> doing to get it behaving in the Eclipse IDE too. Create an extra bundle
>>> with the prefixed forms of the JDT UI packages for use just in this context.
>>>
>>> cheers,
>>> Andy
>>>
>>> On 19 September 2014 11:10, Eric B <ebenza...@gmail.com> wrote:
>>>
>>>> No only a couple of places that use it.  I think the biggest problem is
>>>> in a single class which is related to the agent for Eclipse - I think.  I
>>>> temporarily commented it out.
>>>>
>>>> But even with the problem class removed, it isn't generating the
>>>> correct sources.  And I am having a lot of difficulty figuring out how to
>>>> debug this when I run it command line, so it's not a very effective
>>>> debugging process adding in printlns as I go along but without being able
>>>> to inspect any vars, or even know which implementations are being called
>>>> for what.
>>>>
>>>> I like your suggesting of trying to jarjar aspectj, but not sure which
>>>> pkgs need to be modified: aspectjrt, aspectjtools, or aspectjweaver?  I
>>>> actually tried to jarjar all 3, just to be safe, but when I run ajc with
>>>> lombok, I get the following error:
>>>>
>>>> [WARNING] You aren't using a compiler supported by lombok, so lombok
>>>> will not work and has been disabled.
>>>> Your processor is:
>>>> org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.BatchProcessingEnvImpl
>>>> Lombok supports: sun/apple javac 1.6, ECJ
>>>>
>>>> Which to me looks like I missed something when I jarjar'ed the pkgs.
>>>>
>>>> But my rule was pretty basic:
>>>> rule org.aspectj.org.eclipse.jdt.* org.eclipse.jdt.@1
>>>> java -jar ~/Documents/Dev/libs/jarjar/jarjar-1.4.jar process
>>>> lombok.jarjar.txt ../1.8.2/aspectjtools-1.8.2.jar
>>>> aspectjtools-1.8.2_lombok.jar
>>>>
>>>> And then pointed to the newly created 1.8.2_lombok version in my maven
>>>> pom.
>>>>
>>>> So I'm a little lost/confused at this point.  Not sure what/where to
>>>> try to tackle next.  Was hoping to get some more direction from Reinier
>>>> Zwitserloot or Roel Spilker (the lead devs) but haven't heard anything back
>>>> from them yet.
>>>>
>>>> Am open to any suggestions.  I was really hoping to use Lombok instead
>>>> of Roo (had an unpleasant Roo experience) and not using any spring-data
>>>> stuff, so figured lombok would be easier.  But I don't know if I'll ever
>>>> get there.
>>>>
>>>> Thanks,
>>>>
>>>> Eric
>>>>
>>>> On Fri, Sep 19, 2014 at 12:19 PM, Andy Clement <
>>>> andrew.clem...@gmail.com> wrote:
>>>>
>>>>> For AspectJ we only repackage the minimum we have to do get the
>>>>> compiler going. That is JDT Core plus the annotations support (for
>>>>> annotation processing) and the dependencies of that. We don't touch JDT
>>>>> UI.  This does mean that AJDT does some mapping between the two - fixing
>>>>> exactly the problem you described of having a org.eclipse.jdt.XXX and
>>>>> needing a org.aspectj.org.eclipse.jdt.XXX.  I can see that those UI ones 
>>>>> do
>>>>> relate to source manipulation/refactoring (which arguably is not actually 
>>>>> a
>>>>> UI concern - but that's another story).
>>>>>
>>>>> Is it a lot of places where you get that problem in lombok?
>>>>>
>>>>> On the command line I could maybe imagine a 'hack' to test whether
>>>>> this thing will work at all by jarjar'ing aspectj and converting it back 
>>>>> to
>>>>> just org.eclipse.jdt - but that solution wouldn't fly in Eclipse where we
>>>>> rely on the different package names to avoid tripping over real jdt.
>>>>>
>>>>> cheers,
>>>>> Andy
>>>>>
>>>>> On 18 September 2014 18:57, Eric B <ebenza...@gmail.com> wrote:
>>>>>
>>>>>> I've been working on it, but it isn't as obvious as I hoped/thought.
>>>>>> I quickly tried to JarJar the compiled package but it didn't work.  So I
>>>>>> started manually renaming everything in the packages by hand in the 
>>>>>> lombok
>>>>>> sources.  However, I ran into a problem that I am not sure how to 
>>>>>> resolve.
>>>>>> Some of Lombok relies on some non-aspectj rebranded packages, 
>>>>>> specifically:
>>>>>>    org.eclipse.jdt.internal.corext
>>>>>>    org.eclipse.jdt.internal.ui
>>>>>>
>>>>>>
>>>>>> The biggest problem I have is that Lombok uses classes from these
>>>>>> packages and tries to pass org.aspectj.xxx classes as arguments to their
>>>>>> methods.  Since the classes are original org.eclipse.jdt packages,
>>>>>> obviously the arguments do not match the expected type.  ie: passed an
>>>>>> org.aspectj.org.eclipse.jdt argument but expecting a org.eclispe.jdt
>>>>>> argument.
>>>>>>
>>>>>>
>>>>>> I tried searching the org.aspectj github site, but can't find either
>>>>>> of those two packages having been re-branded.  More importantly, I don't
>>>>>> know if/how Lombok hooks into Eclipse; where it relies on original source
>>>>>> pkg naming.
>>>>>>
>>>>>> Do either of the packages mean anything to you?
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Eric
>>>>>>
>>>>>>
>>>>>> On Thu, Sep 18, 2014 at 2:16 PM, Andy Clement <
>>>>>> andrew.clem...@gmail.com> wrote:
>>>>>>
>>>>>>> The ECJ packages are renamed but there are also numerous extensions
>>>>>>> here and there to support the likes of ITDs which affect type/method
>>>>>>> resolution. If you clone the AspectJ repo:
>>>>>>> https://github.com/eclipse/org.aspectj you will see the compiler in
>>>>>>> the org.eclipse.jdt.core module - the binary and src are in there. That
>>>>>>> module is actually built from the repo org.aspectj.shadows - browsing 
>>>>>>> that
>>>>>>> is more complicated so I'd say glance into the src/zip. I can't say 
>>>>>>> whether
>>>>>>> lombok would be compatible apart from the package prefix but my gut 
>>>>>>> feeling
>>>>>>> would be that it would just work.  I wonder if running a jarjar on the
>>>>>>> lombok code to replace occurrences org org.eclipse.jdt. with
>>>>>>> org.aspectj.org.eclipse.jdt. might get it into a working state.
>>>>>>>
>>>>>>> cheers,
>>>>>>> Andy
>>>>>>>
>>>>>>> On 18 September 2014 09:41, Eric B <ebenza...@gmail.com> wrote:
>>>>>>>
>>>>>>>> Hi Andy,
>>>>>>>>
>>>>>>>> Your reply just came in as I was writing my addendum.  I ran across
>>>>>>>> the following post on SO that could hopefully help (
>>>>>>>> http://stackoverflow.com/questions/6107197/how-does-lombok-work).
>>>>>>>>
>>>>>>>> Lombok codes against a) internal javac apis and b) internal eclipse
>>>>>>>> apis (in a separate processor). JSR 269 does not let you modify 
>>>>>>>> existing
>>>>>>>> source code, but when you cast an Element
>>>>>>>> <http://download.oracle.com/javase/6/docs/api/javax/lang/model/element/Element.html>
>>>>>>>>  to
>>>>>>>> the underlying AST node, you can actually modify the AST (which is what
>>>>>>>> project Lombok does).
>>>>>>>>
>>>>>>>> I'm not entirely sure how much ajc deviates from ejc.  Have you
>>>>>>>> just renamed all the packages to be org.aspectj?  Where would I find 
>>>>>>>> the
>>>>>>>> sources for EJC to see how much/where AJC deviates?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> Eric
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Sep 18, 2014 at 11:25 AM, Andy Clement <
>>>>>>>> andrew.clem...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> I had a brief look at this when we added annotation processing
>>>>>>>>> support to AspectJ as that is what I thought Lombok was doing. But 
>>>>>>>>> then I
>>>>>>>>> discovered that I think it wanted to be run as an agent when using the
>>>>>>>>> Eclipse Java Compiler (on which AspectJ is based). If I recall 
>>>>>>>>> correctly
>>>>>>>>> lombok had hardcoded classnames for ECJ classes in it and in AspectJ 
>>>>>>>>> we
>>>>>>>>> prefix those with "org.aspectj." - that is as far as I got looking 
>>>>>>>>> though,
>>>>>>>>> I'm afraid.  It would be great if someone had a bit more time than me 
>>>>>>>>> to
>>>>>>>>> dig into it.  Possibly you just need a lombok that recognizes this 
>>>>>>>>> variant
>>>>>>>>> of ECJ.
>>>>>>>>>
>>>>>>>>> I think within eclipse some people have been turning on both java
>>>>>>>>> and aspectj builders to get it to work a little better. the java 
>>>>>>>>> builder
>>>>>>>>> allowing lombok to run then AspectJ running afterwards but that sounds
>>>>>>>>> pretty ugly so I've never tried it.
>>>>>>>>>
>>>>>>>>> cheers,
>>>>>>>>> Andy
>>>>>>>>>
>>>>>>>>> On 17 September 2014 20:27, Eric B <ebenza...@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> I'm trying to use Lombok (http://projectlombok.org/) in an
>>>>>>>>>> AspectJ project, but when I enable AspectJ, none of my generated 
>>>>>>>>>> lombok
>>>>>>>>>> code is added to my byte code.
>>>>>>>>>>
>>>>>>>>>> I'm not entirely sure how lombok interacts with Javac, but my
>>>>>>>>>> guess is that the ajc compiler does not recognize lombok the way 
>>>>>>>>>> javac does.
>>>>>>>>>>
>>>>>>>>>> Is there anyway to make these two play nicely?  Can I configure
>>>>>>>>>> ajc to use/recognize lombok properly?  Or am I forced to pick only 
>>>>>>>>>> one of
>>>>>>>>>> the two technologies?
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>>
>>>>>>>>>> Eric
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> aspectj-users mailing list
>>>>>>>>>> aspectj-users@eclipse.org
>>>>>>>>>> To change your delivery options, retrieve your password, or
>>>>>>>>>> unsubscribe from this list, visit
>>>>>>>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> aspectj-users mailing list
>>>>>>>>> aspectj-users@eclipse.org
>>>>>>>>> To change your delivery options, retrieve your password, or
>>>>>>>>> unsubscribe from this list, visit
>>>>>>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> aspectj-users mailing list
>>>>>>>> aspectj-users@eclipse.org
>>>>>>>> To change your delivery options, retrieve your password, or
>>>>>>>> unsubscribe from this list, visit
>>>>>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> aspectj-users mailing list
>>>>>>> aspectj-users@eclipse.org
>>>>>>> To change your delivery options, retrieve your password, or
>>>>>>> unsubscribe from this list, visit
>>>>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> aspectj-users mailing list
>>>>>> aspectj-users@eclipse.org
>>>>>> To change your delivery options, retrieve your password, or
>>>>>> unsubscribe from this list, visit
>>>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> aspectj-users mailing list
>>>>> aspectj-users@eclipse.org
>>>>> To change your delivery options, retrieve your password, or
>>>>> unsubscribe from this list, visit
>>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> aspectj-users mailing list
>>>> aspectj-users@eclipse.org
>>>> To change your delivery options, retrieve your password, or unsubscribe
>>>> from this list, visit
>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>
>>>
>>>
>>> _______________________________________________
>>> aspectj-users mailing list
>>> aspectj-users@eclipse.org
>>> To change your delivery options, retrieve your password, or unsubscribe
>>> from this list, visit
>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>
>>
>>
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@eclipse.org
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
aspectj-users@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to