In Eclipse the following setup all compiles and runs just fine.
However, when using javac on the code, compiling LombokInheritanceProblem_BaseClass results in compiler errors.
My Files:
package stackoverflow.lombok.inheritanceproblem;
import lombok.experimental.UtilityClass;
@UtilityClass
public class AOPString {
static public String toLower(final String pString) {
return pString == null ? null : pString.toLowerCase();
}
}
and
package stackoverflow.lombok.inheritanceproblem;
import lombok.experimental.ExtensionMethod;
@ExtensionMethod({ AOPString.class })
public class LombokInheritanceProblem_BaseClass {
public static void main(final String[] args) {
final LombokInheritanceProblem_BaseClass o = new LombokInheritanceProblem_BaseClass();
o.method1_normal();
o.method2_overridden();
o.method3_final();
System.out.println("Done.");
}
public LombokInheritanceProblem_BaseClass() {
System.out.println("LombokInheritanceProblem_BaseClass.LombokInheritanceProblem_BaseClass()".toLower());
}
public void method1_normal() {
System.out.println("LombokInheritanceProblem_BaseClass.method1_normal()".toLower());
}
public void method2_overridden() {
System.out.println("LombokInheritanceProblem_BaseClass.method2_normal()".toLower());
}
public final void method3_final() {
System.out.println("LombokInheritanceProblem_BaseClass.method3_final()".toLower());
}
}
and
package stackoverflow.lombok.inheritanceproblem;
import lombok.experimental.ExtensionMethod;
@ExtensionMethod({ AOPString.class })
public class LombokInheritanceProblem_ChildClass extends LombokInheritanceProblem_BaseClass {
public static void main(final String[] args) {
final LombokInheritanceProblem_ChildClass o = new LombokInheritanceProblem_ChildClass();
o.method1_normal();
o.method2_overridden();
o.method3_final();
System.out.println("Done.");
}
public LombokInheritanceProblem_ChildClass() {
System.out.println("LombokInheritanceProblem_ChildClass.LombokInheritanceProblem_ChildClass()".toLower());
}
@Override public void method2_overridden() {
System.out.println("LombokInheritanceProblem_ChildClass.method2_overridden()".toLower());
}
}
As I stated already, Eclipse compilation of both files works without problems.
Compiling class LombokInheritanceProblem_BaseClass by calling "C:\Program Files\Java\jdk1.8.0_181\bin\javac.exe" D:\workspace\Test\src\stackoverflow\lombok\inheritanceproblem\LombokInheritanceProblem_BaseClass.java -encoding utf8 -cp D:\lombok.jar -sourcepath D:\workspace\Test\src -d D:\apps-jc\libs_test\JcLib__AOP_Lombok_Test\jar-contents also compiles and produces runnable code (that I later wrap up in an executable jar, which runs fine.
D:\apps-jc\libs_test\JcLib__AOP_Lombok_Test\jar-contents is emptied in between compilations.
When I try to compile the code of LombokInheritanceProblem_ChildClass with the command "C:\Program Files\Java\jdk1.8.0_181\bin\javac.exe" D:\workspace\Test\src\stackoverflow\lombok\inheritanceproblem\LombokInheritanceProblem_ChildClass.java -encoding utf8 -cp D:\lombok.jar -sourcepath D:\workspace\Test\src -d D:\apps-jc\libs_test\JcLib__AOP_Lombok_Test\jar-contents I get this interesting exception:
D:\workspace\Test\src\stackoverflow\lombok\inheritanceproblem\LombokInheritanceProblem_BaseClass.java:17: error: cannot find symbol
System.out.println("LombokInheritanceProblem_BaseClass.LombokInheritanceProblem_BaseClass()".toLower());
^
symbol: method toLower()
location: class String
D:\workspace\Test\src\stackoverflow\lombok\inheritanceproblem\LombokInheritanceProblem_BaseClass.java:21: error: cannot find symbol
System.out.println("LombokInheritanceProblem_BaseClass.method1_normal()".toLower());
^
symbol: method toLower()
location: class String
D:\workspace\Test\src\stackoverflow\lombok\inheritanceproblem\LombokInheritanceProblem_BaseClass.java:24: error: cannot find symbol
System.out.println("LombokInheritanceProblem_BaseClass.method2_normal()".toLower());
^
symbol: method toLower()
location: class String
D:\workspace\Test\src\stackoverflow\lombok\inheritanceproblem\LombokInheritanceProblem_BaseClass.java:27: error: cannot find symbol
System.out.println("LombokInheritanceProblem_BaseClass.method3_final()".toLower());
^
symbol: method toLower()
location: class String
4 errors
Weirdest thing is, that those problems are raised in the file LombokInheritanceProblem_BaseClass.
When compiling LombokInheritanceProblem_BaseClass as the target, those problems did not arise.
So what am I doing wrong?
- Do I need to add additional stuff to the classpath?
- Is it the sequence/order of items for the javac compilation command that pose a problem?
- Am I missing some annotations inside my .java files?