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
>
>>

Reply via email to