Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Java] Sauce bindings does not support Open JDK 16 #253

Closed
sdanes1 opened this issue Apr 30, 2021 · 9 comments
Closed

[Java] Sauce bindings does not support Open JDK 16 #253

sdanes1 opened this issue Apr 30, 2021 · 9 comments
Labels
bug Something isn't working java Java Bindings

Comments

@sdanes1
Copy link

sdanes1 commented Apr 30, 2021

Hey folks, love this project. I'm starting up a new greenfield project at work and want to incorporate these binding libraries into our solutions as the primary interface to SauceLabs for all our frameworks/bindings. I ran into an issue with the Java one I am working on. We are using OpenJDK 16 and Maven 3.8.1.

I started by using the dependency for sauce-bindings from Maven Central This throws an exception on build:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (java-compile) on project tcats-core: Fatal error compiling: java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x3375b118) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x3375b118 -> [Help 1]

Doing a little research, this is because of this lombok issue. Reading through this project lombok issue, upgrading to lombok 1.18.20 fixes the problem of building with Open JDK 16.

I'm using the following workaround for now in my own pom.xml, however I am still building out usage of sauce-bindings library in my own project, I may run into further compatibility issues as I progress.

Workaround:

<!-- https://mvnrepository.com/artifact/com.saucelabs/sauce_bindings --> <dependency> <groupId>com.saucelabs</groupId> <artifactId>sauce_bindings</artifactId> <version>${sauce.bindings.version}</version> <exclusions> <exclusion> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclusion> </exclusions> </dependency> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency>

@titusfortner
Copy link
Collaborator

Awesome, thanks for reporting this; I'm glad you like it, I'll get this addressed right away.

@sdanes1
Copy link
Author

sdanes1 commented May 3, 2021

Thanks for responding so quickly Titus! Also very interested in WIP for mobile support We will need this eventually. I almost held off on adopting the binding till this was merged but figured worst case I can sub-class existing binding in a similar pattern to what you are doing in that MR if I need Mobile before you guys have it ready for prime time. :-)

@titusfortner
Copy link
Collaborator

Yeah, sorry for the delay on it. I'm nervous about making a change that deprecates existing functionality. I've just been promoted to a position that will allow me more time to work on this project. I've been developing this very intermittently and every time I get back into the code I change how I think it should be implemented. But we need something that scales better than what we have to facilitate mobile & visual, etc.

#246 is actually the next step, then I'll implement mobile off of that approach (using config classes under the hood with build().

@sdanes1
Copy link
Author

sdanes1 commented May 3, 2021

Oh awesome! Yes I know what it's like having to split focus between projects. I agree with making deprecating/breaking changes. It's always at least a bit of a pain but sometimes needed to move things forward. I like the #246 approach as well. I should have time to work on integrating your java binding with our java binding today/tomorrow. May have some better feedback once I've got the binding integrated. I'm standing up a bit of a facade/manager so that a test can just describe what it's valid for and be fed to the right sauce configurations/platforms/setup/etc...

@titusfortner
Copy link
Collaborator

Also, coming from a Ruby background it has been interesting to see what is needed to optimize things for Java (I'm sure I have a lot of room to grow still). But yeah, making sure that the IDE is only showing values that are applicable to the configuration that has been picked is essential.

Please feel free to reach out with suggestions or ideas (either in issue or email me directly).

@sdanes1
Copy link
Author

sdanes1 commented May 3, 2021

Will do. If your talking Java 8 or 9 it's showing it's age as a language a good deal. If your talking Java 14ish and up it's getting pretty awesome. Your a hero Titus. Thanks!

@titusfortner
Copy link
Collaborator

yeah, I had to pull out the code that relied on Java 9 because someone asked me to. :)
Java 8 for life apparently. :-D

@nadvolod nadvolod added bug Something isn't working java Java Bindings labels May 3, 2021
@titusfortner
Copy link
Collaborator

This should be good to go in 1.0.4 (just released).
Thanks again.

@sdanes1
Copy link
Author

sdanes1 commented May 4, 2021

@titusfortner Confirmed! Fixed with sauce-bindings v1.0.4 from maven central. Thanks so much for your help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working java Java Bindings
Projects
None yet
Development

No branches or pull requests

3 participants