Thanks Nick—the errors when building the stock header extension were: [ERROR] The project org.apache.guacamole:guacamole-auth-header:1.5.4 (/home/test/guacamole-auth-header/pom.xml) has 1 error [ERROR] 'dependencies.dependency.version' for com.google.inject:guice:jar is missing. @ line 44, column 21
and: [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] Source option 5 is no longer supported. Use 6 or later. [ERROR] Target option 1.5 is no longer supported. Use 1.6 or later. I had assumed that I needed to target the version of Java installed: $ mvn --version Apache Maven 3.6.3 Maven home: /usr/share/maven Java version: 11.0.23, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64 Default locale: en_GB, platform encoding: UTF-8 OS name: "linux", version: "5.15.0-112-generic", arch: "amd64", family: "unix" But having changed it to 8 / 1.8 from what you said, the extension now compiles and loads. The pom for this extension doesn't include a version line for Guice, and I've 'successfully' built and loaded with version 7 using source 8 / target 1.8, which you seemed to suggest shouldn't work? I haven't actually tested that the extension is working properly, only that it loads when guac starts. But what version of Guice should I be using? Perhaps it's specified somewhere else in the main project, not in this extension? Many thanks, David On Fri, 28 Jun 2024 at 02:37, Nick Couchman <vn...@apache.org> wrote: > On Fri, Jun 21, 2024 at 6:03 AM David Lomas <d...@pale-eds.co.uk.invalid> > wrote: > >> Thanks Nick—to test my basic setup, I tried copying that extension from >> the 1.5.4 branch (to match the current version of gauc I'm running in >> docker), and built it. I had to make 2 changes—not sure if this is >> expected, but it required a <version>7.0.0</version> entry in the Guice >> dependency (not sure if the latest version is correct), and I also had to >> add these lines to the pom: >> >> <properties> >> <maven.compiler.source>11</maven.compiler.source> >> <maven.compiler.target>11</maven.compiler.target> >> </properties> >> >> I was then able to compile and install the extension in >> guacamole-home/extensions/ before rebuilding and restarting the >> container. But during startup, I see this in the logs: >> >> guacamole_compose | 09:54:10.264 [localhost-startStop-1] ERROR >> o.a.g.extension.ExtensionModule - Extension >> "guacamole-auth-header-1.5.4.jar" could not be loaded: Authentication >> provider class cannot be loaded (wrong version of API?). >> >> I'm guessing this (and the earlier changes I had to make (including >> removing the <parent></parent> entry from the pom) is because I'm trying >> to build this in isolation outside the main source tree; is that right? If >> so, do I need to just install the whole client to build this extension, or >> is it something else? >> >> > It isn't so much that you're trying to build outside of the main code > tree, it's more likely that the pom.xml changes you've made - in particular > to the Guice version - are likely going to cause you to end up with very > different code, and you'll probably need to load, not just the module > you've compiled, but the entirety of the WAR file and other extensions, > from code compiled with the same dependencies, particularly Guice and the > Java target. > > I'm not sure what issues you were running into that caused you to bump the > Guice version up, but the versions we've got in there, now, are very much > designed to maintain Java 1.8 (Jara 8) compatibility. Once you go to Guice > 7 you then are required to bump Java up to version 11, as you've found out, > and both of those changes are going to cause widespread compatibility > issues between the "stock" versions that we provide as downloads and > anything you compile. > > -Nick > >>