Version 1.16.0 renames Delombok, now inaccessible #810

Closed
lombokissues opened this Issue Jul 14, 2015 · 6 comments

Projects

None yet

1 participant

@lombokissues
Collaborator

Migrated from Google Code (issue 775)

@lombokissues
Collaborator

👤 anthony@whitford.com   🕗 Jan 27, 2015 at 06:20 UTC

I'm trying to update the lombok-maven-plugin for the 1.16.0 release and am running into a build problem:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project lombok-maven-plugin: Compilation failure: Compilation failure:
[ERROR] /Users/anthony/Documents/lombok.maven/lombok-maven-plugin/src/main/java/lombok/maven/AbstractDelombokMojo.java:[19,23] package lombok.delombok does not exist
[ERROR] /Users/anthony/Documents/lombok.maven/lombok-maven-plugin/src/main/java/lombok/maven/AbstractDelombokMojo.java:[20,32] package lombok.delombok.Delombok does not exist

It looks like the classes were renamed:
lombok/delombok/Delombok.class
is now:
lombok/delombok/Delombok.SCL.lombok

My code needs to import Delombok, but how can it given the rename? (I'm surprised that the extension doesn't need to be .class.)

How does your AntTask deal with this?

@lombokissues
Collaborator

👤 r.spilker   🕗 Jan 27, 2015 at 12:35 UTC

Hmm, I don't know if we updated that one :-)

I don't have an exact solution but you need to use lombok.launch.Main﹟createShadowClassLoader() or similar code to create a classloader that's aware of the SCL.lombok files, and use Class.forName on that classloader to load your own code.

I think you either need to use reflection or have at least one of your classes in the same package since all (or at least most) of the code involved is package private.

We will need to consider a public API, and also update the AntTask.

@lombokissues
Collaborator

👤 anthony@whitford.com   🕗 Jan 28, 2015 at 09:42 UTC

OK, it was a bit of a pain, but I think I got this working based on your advice. Thanks.

BTW... I thought that this kind of obfuscation was not necessary with OSGi.

@lombokissues
Collaborator

👤 reinierz   🕗 Jan 30, 2015 at 02:43 UTC

OSGi makes this kind of obfuscation mostly unneccessary, but we can't very well demand OSGi from all our users, so we went with this solution. Unlike OSGi, the shadowloader doesn't have any restrictions.

@lombokissues
Collaborator

👤 reinierz   🕗 Jan 30, 2015 at 02:47 UTC

ant task now fixed with full hiding, though regrettably the ant task classname has been changed, which isn't backwards compatible.

Fixed in 8ed49ce

@lombokissues
Collaborator

End of migration

@riccardobl riccardobl added a commit to riccardobl/lombok that referenced this issue Jul 25, 2015
@riccardobl riccardobl Fix for issue #810 45bcaab
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment