Debugging binding outside of OH repository

I’m not sure what to make of this. It looks like most of your changes were already the standard in my pom.xml, as pasted here. I also didn’t find a <parent> tag…?

Anyway, I did git reset --hard origin/main and then git clean -fdX, so I think I’m at a “fresh” start. That also cleared all the jsondb files you mentioned here:

I now used this:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>org.openhab.demo</groupId>
  <artifactId>org.openhab.demo.app</artifactId>
  <version>4.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>openHAB Demo :: App</name>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <oh.java.version>21</oh.java.version>
    <maven.compiler.release>${oh.java.version}</maven.compiler.release>
    <bnd.version>7.1.0</bnd.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.openhab.core.bom</groupId>
      <artifactId>org.openhab.core.bom.runtime</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.openhab.core.bom</groupId>
      <artifactId>org.openhab.core.bom.openhab-core</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.openhab.ui.bom</groupId>
      <artifactId>org.openhab.ui.bom.openhab-ui</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>

<!-- uncomment this and add the name of your binding that you want to work on -->
    <dependency>
      <groupId>org.openhab.addons.bundles</groupId>
      <artifactId>org.openhab.binding.unifiprotect</artifactId>
      <version>4.0.0-SNAPSHOT</version>
      <scope>runtime</scope>
    </dependency>
<!-- -->

<!-- uncomment this if you want to work on the Zigbee binding
    <dependency>
      <groupId>org.openhab.addons.bom</groupId>
      <artifactId>org.openhab.addons.bom.zigbee</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>
-->

  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <!-- Use the bnd-maven-plugin and assemble the symbolic names -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>bnd-process</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <!-- Required to make the maven-jar-plugin pick up the bnd generated manifest. Also avoid packaging empty Jars -->
        <!-- Moved... -->

        <!-- Setup the indexer for running and testing -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-indexer-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <localURLs>REQUIRED</localURLs>
            <attach>false</attach>
          </configuration>
          <executions>
            <execution>
              <id>index</id>
              <goals>
                <goal>index</goal>
              </goals>
              <configuration>
                <indexName>${project.artifactId}</indexName>
              </configuration>
            </execution>
            <execution>
              <id>test-index</id>
              <goals>
                <goal>index</goal>
              </goals>
              <configuration>
                <indexName>${project.artifactId}</indexName>
                <outputFile>${project.build.directory}/test-index.xml</outputFile>
                <scopes>
                  <scope>test</scope>
                </scopes>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the resolver plugin we use -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-resolver-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <failOnChanges>false</failOnChanges>
            <bndruns>
            </bndruns>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>resolve</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the export plugin we use -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-export-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <resolve>true</resolve>
            <failOnChanges>true</failOnChanges>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>export</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the testing plugin that we use -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-testing-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>testing</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the baseline plugin we use and avoid failing when no baseline jar exists. -->
        <!-- (for example before the first release) -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-baseline-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <failOnMissing>false</failOnMissing>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>baseline</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Allow running openHAB demo app from a Maven/bnd task -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-run-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <includeDependencyManagement>true</includeDependencyManagement>
            <bndrun>app.bndrun</bndrun>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.13.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.1.3</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.5.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.1.3</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.4.2</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.11.2</version>
          <configuration>
            <outputDirectory>${project.build.directory}/site</outputDirectory>
            <failOnError>!${quality.skip}</failOnError>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>3.15.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>3.1.1</version>
          <configuration>
            <preparationGoals>clean install</preparationGoals>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.13.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.21.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.5.2</version>
        </plugin>

        <!-- This plugin's configuration is used to store Eclipse m2e settings only. -->
        <!-- It has no influence on the Maven build itself. -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>biz.aQute.bnd</groupId>
                    <artifactId>bnd-indexer-maven-plugin</artifactId>
                    <versionRange>[3.1.0,)</versionRange>
                    <goals>
                      <goal>index</goal>
                      <goal>local-index</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-run-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-export-maven-plugin</artifactId>
        <configuration>
          <failOnChanges>false</failOnChanges>
          <bndruns>
            <bndrun>app.bndrun</bndrun>
          </bndruns>
        </configuration>
      </plugin>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-resolver-maven-plugin</artifactId>
        <configuration>
          <bndruns>
            <bndrun>app.bndrun</bndrun>
          </bndruns>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <repositories>
    <repository>
      <id>openhab-artifactory-release</id>
      <name>JFrog Artifactory Repository</name>
      <url>https://openhab.jfrog.io/openhab/libs-release</url>
      <releases>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>openhab-artifactory-snapshot</id>
      <name>JFrog Artifactory Repository</name>
      <url>https://openhab.jfrog.io/openhab/libs-snapshot</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>daily</updatePolicy>
      </snapshots>
    </repository>
  </repositories>

  <profiles>
    <profile>
      <id>with-bnd-resolver-resolve</id>
      <activation>
        <property>
          <name>withResolver</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>biz.aQute.bnd</groupId>
              <artifactId>bnd-resolver-maven-plugin</artifactId>
              <version>${bnd.version}</version>
              <executions>
                <execution>
                  <goals>
                    <goal>resolve</goal>
                  </goals>
                  <phase>package</phase>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>j21</id>
      <properties>
        <oh.java.version>21</oh.java.version>
        <maven.compiler.release>${oh.java.version}</maven.compiler.release>
      </properties>
    </profile>
  </profiles>

</project>

There are still two errors… The upper red dot with cross reads this:

The lower reads this:

Or, apparently also visible below:

I then went through all your steps:

Alas:

____________________________
Welcome to Apache Felix Gogo

g! apr 22, 2025 9:20:08 A.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-frontend-jaxrs (50) [org.apache.cxf.jaxrs.JAXRSBindingFactory]
apr 22, 2025 9:20:08 A.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-rs-sse (52) [org.apache.cxf.transport.sse.SseProvidersExtension]
apr 22, 2025 9:20:08 A.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-transports-http (54) [org.apache.cxf.transport.http.HTTPTransportFactory, org.apache.cxf.transport.http.HTTPWSDLExtensionLoader, org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder, org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder, org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider]
apr 22, 2025 9:20:08 A.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
apr 22, 2025 9:20:08 A.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
apr 22, 2025 9:20:08 A.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
apr 22, 2025 9:20:08 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxEventFactory of service javax.xml.stream.XMLEventFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:20:08 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxInputFactory of service javax.xml.stream.XMLInputFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:20:08 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.dtd.DTDSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:20:08 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.msv.RelaxNGSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:20:08 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.msv.W3CSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:20:08 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxOutputFactory of service javax.xml.stream.XMLOutputFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:20:08 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.aries.jax.rs.whiteboard.internal.client.ClientBuilderImpl of service javax.ws.rs.client.ClientBuilder in bundle org.apache.aries.jax.rs.whiteboard
apr 22, 2025 9:20:08 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl of service javax.ws.rs.ext.RuntimeDelegate in bundle org.apache.aries.jax.rs.whiteboard
apr 22, 2025 9:20:08 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.cxf.jaxrs.sse.client.SseEventSourceBuilderImpl of service javax.ws.rs.sse.SseEventSource.Builder in bundle org.apache.aries.jax.rs.whiteboard
apr 22, 2025 9:20:09 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http.Http1FieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.eclipse.jetty.http
apr 22, 2025 9:20:09 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http2.hpack.HpackFieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.eclipse.jetty.http2.hpack
apr 22, 2025 9:20:09 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
apr 22, 2025 9:20:09 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.fragment.FragmentExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
apr 22, 2025 9:20:09 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
apr 22, 2025 9:20:09 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.DeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
apr 22, 2025 9:20:09 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.XWebkitDeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
apr 22, 2025 9:20:09 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.server.NativeWebSocketServletContainerInitializer of service javax.servlet.ServletContainerInitializer in bundle org.eclipse.jetty.websocket.server
09:20:17.977 [WARN ] [ce.jetty.internal.JettyServerWrapper] - Can't create temporary directory for OsgiContextModel{HS,id=OCM-33,name='context:973036338',path='/',bundle=org.apache.felix.webconsole,context=WebContainerContextWrapper{bundle=org.apache.felix.webconsole_4.7.2 [56],contextId='context:973036338',delegate=org.apache.felix.webconsole.internal.servlet.OsgiManagerHttpContext@39ff5b32}}: C:\Users\Erik\AppData\Local\Temp\ROOT\context:973036338

I then did the whole operation again with:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>org.openhab.demo</groupId>
  <artifactId>org.openhab.demo.app</artifactId>
  <version>4.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>openHAB Demo :: App</name>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <oh.java.version>21</oh.java.version>
    <maven.compiler.release>${oh.java.version}</maven.compiler.release>
    <bnd.version>7.1.0</bnd.version>
    <enforcer.skip>true</enforcer.skip>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.openhab.core.bom</groupId>
      <artifactId>org.openhab.core.bom.runtime</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.openhab.core.bom</groupId>
      <artifactId>org.openhab.core.bom.openhab-core</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.openhab.ui.bom</groupId>
      <artifactId>org.openhab.ui.bom.openhab-ui</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>

<!-- uncomment this and add the name of your binding that you want to work on -->
    <dependency>
      <groupId>org.openhab.addons.bundles</groupId>
      <artifactId>org.openhab.binding.unifiprotect</artifactId>
      <version>4.0.0-SNAPSHOT</version>
      <scope>runtime</scope>
    </dependency>
<!-- -->

<!-- uncomment this if you want to work on the Zigbee binding
    <dependency>
      <groupId>org.openhab.addons.bom</groupId>
      <artifactId>org.openhab.addons.bom.zigbee</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>
-->

  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <!-- Use the bnd-maven-plugin and assemble the symbolic names -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>bnd-process</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <!-- Required to make the maven-jar-plugin pick up the bnd generated manifest. Also avoid packaging empty Jars -->
        <!-- Moved... -->

        <!-- Setup the indexer for running and testing -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-indexer-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <localURLs>REQUIRED</localURLs>
            <attach>false</attach>
          </configuration>
          <executions>
            <execution>
              <id>index</id>
              <goals>
                <goal>index</goal>
              </goals>
              <configuration>
                <indexName>${project.artifactId}</indexName>
              </configuration>
            </execution>
            <execution>
              <id>test-index</id>
              <goals>
                <goal>index</goal>
              </goals>
              <configuration>
                <indexName>${project.artifactId}</indexName>
                <outputFile>${project.build.directory}/test-index.xml</outputFile>
                <scopes>
                  <scope>test</scope>
                </scopes>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the resolver plugin we use -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-resolver-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <failOnChanges>false</failOnChanges>
            <bndruns>
            </bndruns>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>resolve</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the export plugin we use -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-export-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <resolve>true</resolve>
            <failOnChanges>true</failOnChanges>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>export</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the testing plugin that we use -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-testing-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>testing</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the baseline plugin we use and avoid failing when no baseline jar exists. -->
        <!-- (for example before the first release) -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-baseline-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <failOnMissing>false</failOnMissing>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>baseline</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Allow running openHAB demo app from a Maven/bnd task -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-run-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <includeDependencyManagement>true</includeDependencyManagement>
            <bndrun>app.bndrun</bndrun>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.13.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.1.3</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.5.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.1.3</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.4.2</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.11.2</version>
          <configuration>
            <outputDirectory>${project.build.directory}/site</outputDirectory>
            <failOnError>!${quality.skip}</failOnError>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>3.15.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>3.1.1</version>
          <configuration>
            <preparationGoals>clean install</preparationGoals>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.13.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.21.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.5.2</version>
        </plugin>

        <!-- This plugin's configuration is used to store Eclipse m2e settings only. -->
        <!-- It has no influence on the Maven build itself. -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>biz.aQute.bnd</groupId>
                    <artifactId>bnd-indexer-maven-plugin</artifactId>
                    <versionRange>[3.1.0,)</versionRange>
                    <goals>
                      <goal>index</goal>
                      <goal>local-index</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-run-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-export-maven-plugin</artifactId>
        <configuration>
          <failOnChanges>false</failOnChanges>
          <bndruns>
            <bndrun>app.bndrun</bndrun>
          </bndruns>
        </configuration>
      </plugin>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-resolver-maven-plugin</artifactId>
        <configuration>
          <bndruns>
            <bndrun>app.bndrun</bndrun>
          </bndruns>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <repositories>
    <repository>
      <id>openhab-artifactory-release</id>
      <name>JFrog Artifactory Repository</name>
      <url>https://openhab.jfrog.io/openhab/libs-release</url>
      <releases>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>openhab-artifactory-snapshot</id>
      <name>JFrog Artifactory Repository</name>
      <url>https://openhab.jfrog.io/openhab/libs-snapshot</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>daily</updatePolicy>
      </snapshots>
    </repository>
  </repositories>

  <profiles>
    <profile>
      <id>with-bnd-resolver-resolve</id>
      <activation>
        <property>
          <name>withResolver</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>biz.aQute.bnd</groupId>
              <artifactId>bnd-resolver-maven-plugin</artifactId>
              <version>${bnd.version}</version>
              <executions>
                <execution>
                  <goals>
                    <goal>resolve</goal>
                  </goals>
                  <phase>package</phase>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>j21</id>
      <properties>
        <oh.java.version>21</oh.java.version>
        <maven.compiler.release>${oh.java.version}</maven.compiler.release>
      </properties>
    </profile>
  </profiles>

</project>

(So this time with <enforcer.skip>true</enforcer.skip>). The result looks the same:

____________________________
Welcome to Apache Felix Gogo

g! apr 22, 2025 9:22:37 A.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-frontend-jaxrs (50) [org.apache.cxf.jaxrs.JAXRSBindingFactory]
apr 22, 2025 9:22:37 A.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-rs-sse (52) [org.apache.cxf.transport.sse.SseProvidersExtension]
apr 22, 2025 9:22:37 A.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-transports-http (54) [org.apache.cxf.transport.http.HTTPTransportFactory, org.apache.cxf.transport.http.HTTPWSDLExtensionLoader, org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder, org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder, org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider]
apr 22, 2025 9:22:37 A.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
apr 22, 2025 9:22:37 A.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
apr 22, 2025 9:22:37 A.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxEventFactory of service javax.xml.stream.XMLEventFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxInputFactory of service javax.xml.stream.XMLInputFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.dtd.DTDSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.msv.RelaxNGSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.msv.W3CSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxOutputFactory of service javax.xml.stream.XMLOutputFactory in bundle com.fasterxml.woodstox.woodstox-core
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.aries.jax.rs.whiteboard.internal.client.ClientBuilderImpl of service javax.ws.rs.client.ClientBuilder in bundle org.apache.aries.jax.rs.whiteboard
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl of service javax.ws.rs.ext.RuntimeDelegate in bundle org.apache.aries.jax.rs.whiteboard
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.cxf.jaxrs.sse.client.SseEventSourceBuilderImpl of service javax.ws.rs.sse.SseEventSource.Builder in bundle org.apache.aries.jax.rs.whiteboard
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http.Http1FieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.eclipse.jetty.http
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http2.hpack.HpackFieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.eclipse.jetty.http2.hpack
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.fragment.FragmentExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.DeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.XWebkitDeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
apr 22, 2025 9:22:37 A.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.server.NativeWebSocketServletContainerInitializer of service javax.servlet.ServletContainerInitializer in bundle org.eclipse.jetty.websocket.server
09:22:48.829 [WARN ] [ce.jetty.internal.JettyServerWrapper] - Can't create temporary directory for OsgiContextModel{HS,id=OCM-33,name='context:2098533498',path='/',bundle=org.apache.felix.webconsole,context=WebContainerContextWrapper{bundle=org.apache.felix.webconsole_4.7.2 [56],contextId='context:2098533498',delegate=org.apache.felix.webconsole.internal.servlet.OsgiManagerHttpContext@7d15147a}}: C:\Users\Erik\AppData\Local\Temp\ROOT\context:2098533498

I thought I’d check that directory, but it looks empty, as do both subdirectories:

C:\Users\Erik\AppData\Local\Temp\ROOT>dir /q /a
 Volume in drive C is Windows
 Volume Serial Number is D876-7EB9

 Directory of C:\Users\Erik\AppData\Local\Temp\ROOT

22/04/2025  08:37    <DIR>          LAPTOPRIK2021\Erik     .
22/04/2025  09:28    <DIR>          LAPTOPRIK2021\Erik     ..
22/04/2025  08:37    <DIR>          LAPTOPRIK2021\Erik     default
22/04/2025  08:37    <DIR>          LAPTOPRIK2021\Erik     org.openhab.ui.context
               0 File(s)              0 bytes
               4 Dir(s)  107.664.437.248 bytes free
C:\Users\Erik\AppData\Local\Temp\ROOT>cd default
C:\Users\Erik\AppData\Local\Temp\ROOT\default>dir /q /a
 Volume in drive C is Windows
 Volume Serial Number is D876-7EB9

 Directory of C:\Users\Erik\AppData\Local\Temp\ROOT\default

22/04/2025  08:37    <DIR>          LAPTOPRIK2021\Erik     .
22/04/2025  08:37    <DIR>          LAPTOPRIK2021\Erik     ..
               0 File(s)              0 bytes
               2 Dir(s)  107.643.154.432 bytes free
C:\Users\Erik\AppData\Local\Temp\ROOT\default>cd ../org.openhab.ui.context
C:\Users\Erik\AppData\Local\Temp\ROOT\org.openhab.ui.context>dir /q /a
 Volume in drive C is Windows
 Volume Serial Number is D876-7EB9

 Directory of C:\Users\Erik\AppData\Local\Temp\ROOT\org.openhab.ui.context

22/04/2025  08:37    <DIR>          LAPTOPRIK2021\Erik     .
22/04/2025  08:37    <DIR>          LAPTOPRIK2021\Erik     ..
               0 File(s)              0 bytes
               2 Dir(s)  107.639.054.336 bytes free

Anyway, another hour spent, but no progress made, I’m afraid… Thanks for all the time you’ve invested already!

This is because we’re talking about different pom.xmls. I was talking about the one for the UniFi Protect Addon, while you’re talking about the pom.xml for the “demo app”.

Again, it sounds like we’re talking about different things. If the git reset cleared the JSONDB files, it means that you must have run it on OH’s “distro” repo. I intended the reset to be done where you had pasted all the files from the UniFi Protect add-on, which is most likely in OH’s official “addons” repo.

This is from Eclipse itself, it’s a “security feature” to prevent XXE attacks, but like so many such things, it also prevents things from actually working. So, you must find a way to tell Eclipse that it is allowed to download external resources. I had the same thing, but I don’t remember exactly where I clicked to “allow it”. But I think I right-clicked the error somewhere (in the editor or in the “Problems” view) and selected “Quick fix” where the suggested quick fix was to allow downloads.

I’m afraid it was futile at this point, with the above issues in mind.

Again, this applies to the pom.xml of the UniFi Protect add-on, and it’s strictly only necessary when you want to build the plugin using Maven (mvn install ....). I don’t think M2E “respects” the enforcer plugin anyway.

@ErikDB Try Eclipse:Settings:Maven → tick “Download Artifact Javadoc”

I had the same issue in the past and from my pod it has nothing to do with Javadoc files, but that time it helped.

See also

It’s a shame that this seems to “be left to die”, as this is very much doable and it would be nice if the topic was “solved” for others that want to achieve the same.

It’s still on my radar. But I haven’t found enough free time to dive into it :grimacing:

It goes beyond what I can easily achieve when I have 15 minutes free…

I jumped through some hoops, but got the same red, and thus scary looking, logs. But it turns out the GUI was operational. So maybe it all worked before as well? And I should have looked past the red logs…?

We’ll see where I get.


I ran git clean -fdX on both the distro as the add-on folder.

I then used this as add-on pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.openhab.addons.bundles</groupId>
    <artifactId>org.openhab.addons.reactor.bundles</artifactId>
    <version>4.0.0-SNAPSHOT</version>
  </parent>

  <properties>
    <enforcer.skip>true</enforcer.skip>
  </properties>

  <artifactId>org.openhab.binding.unifiprotect</artifactId>
  <name>openHAB Add-ons :: Bundles :: UniFi Protect Binding</name>
  <dependencies>
    <dependency>
      <version>1.2.9</version>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <scope>test</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <version>1.2.9</version>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <scope>test</scope>
      <optional>true</optional>
    </dependency>
  </dependencies>
  <repositories>
    <repository>
      <id>openhab-release</id>
      <url>https://openhab.jfrog.io/artifactory/libs-release</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>openhab-snapshot</id>
      <url>https://openhab.jfrog.io/artifactory/libs-snapshot</url>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <profiles>
    <profile>
      <id>standalone</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.openhab.tools.sat</groupId>
            <artifactId>sat-plugin</artifactId>
            <!--version>${sat.version}</version -->
            <configuration>
              <checkstyleProperties>tools/static-code-analysis/checkstyle/ruleset.properties</checkstyleProperties>
              <checkstyleFilter>tools/static-code-analysis/checkstyle/suppressions.xml</checkstyleFilter>
              <spotbugsExclude>tools/static-code-analysis/spotbugs/suppressions.xml</spotbugsExclude>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.commonjava.maven.plugins</groupId>
            <artifactId>directory-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>directories</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>

and this as demo-app pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>org.openhab.demo</groupId>
  <artifactId>org.openhab.demo.app</artifactId>
  <version>4.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>openHAB Demo :: App</name>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <oh.java.version>21</oh.java.version>
    <maven.compiler.release>${oh.java.version}</maven.compiler.release>
    <bnd.version>7.1.0</bnd.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.openhab.core.bom</groupId>
      <artifactId>org.openhab.core.bom.runtime</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.openhab.core.bom</groupId>
      <artifactId>org.openhab.core.bom.openhab-core</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.openhab.ui.bom</groupId>
      <artifactId>org.openhab.ui.bom.openhab-ui</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>

<!-- uncomment this and add the name of your binding that you want to work on -->
    <dependency>
      <groupId>org.openhab.addons.bundles</groupId>
      <artifactId>org.openhab.binding.unifiprotect</artifactId>
      <version>4.0.0-SNAPSHOT</version>
      <scope>runtime</scope>
    </dependency>
<!---->

<!-- uncomment this if you want to work on the Zigbee binding
    <dependency>
      <groupId>org.openhab.addons.bom</groupId>
      <artifactId>org.openhab.addons.bom.zigbee</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>
-->

  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <!-- Use the bnd-maven-plugin and assemble the symbolic names -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>bnd-process</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <!-- Required to make the maven-jar-plugin pick up the bnd generated manifest. Also avoid packaging empty Jars -->
        <!-- Moved... -->

        <!-- Setup the indexer for running and testing -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-indexer-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <localURLs>REQUIRED</localURLs>
            <attach>false</attach>
          </configuration>
          <executions>
            <execution>
              <id>index</id>
              <goals>
                <goal>index</goal>
              </goals>
              <configuration>
                <indexName>${project.artifactId}</indexName>
              </configuration>
            </execution>
            <execution>
              <id>test-index</id>
              <goals>
                <goal>index</goal>
              </goals>
              <configuration>
                <indexName>${project.artifactId}</indexName>
                <outputFile>${project.build.directory}/test-index.xml</outputFile>
                <scopes>
                  <scope>test</scope>
                </scopes>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the resolver plugin we use -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-resolver-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <failOnChanges>false</failOnChanges>
            <bndruns>
            </bndruns>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>resolve</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the export plugin we use -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-export-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <resolve>true</resolve>
            <failOnChanges>true</failOnChanges>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>export</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the testing plugin that we use -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-testing-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>testing</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Define the version of the baseline plugin we use and avoid failing when no baseline jar exists. -->
        <!-- (for example before the first release) -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-baseline-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <failOnMissing>false</failOnMissing>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>baseline</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Allow running openHAB demo app from a Maven/bnd task -->
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-run-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <includeDependencyManagement>true</includeDependencyManagement>
            <bndrun>app.bndrun</bndrun>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.13.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.1.3</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.5.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.1.3</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.4.2</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.11.2</version>
          <configuration>
            <outputDirectory>${project.build.directory}/site</outputDirectory>
            <failOnError>!${quality.skip}</failOnError>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>3.15.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>3.1.1</version>
          <configuration>
            <preparationGoals>clean install</preparationGoals>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.13.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.21.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.5.2</version>
        </plugin>

        <!-- This plugin's configuration is used to store Eclipse m2e settings only. -->
        <!-- It has no influence on the Maven build itself. -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>biz.aQute.bnd</groupId>
                    <artifactId>bnd-indexer-maven-plugin</artifactId>
                    <versionRange>[3.1.0,)</versionRange>
                    <goals>
                      <goal>index</goal>
                      <goal>local-index</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-run-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-export-maven-plugin</artifactId>
        <configuration>
          <failOnChanges>false</failOnChanges>
          <bndruns>
            <bndrun>app.bndrun</bndrun>
          </bndruns>
        </configuration>
      </plugin>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-resolver-maven-plugin</artifactId>
        <configuration>
          <bndruns>
            <bndrun>app.bndrun</bndrun>
          </bndruns>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <repositories>
    <repository>
      <id>openhab-artifactory-release</id>
      <name>JFrog Artifactory Repository</name>
      <url>https://openhab.jfrog.io/openhab/libs-release</url>
      <releases>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>openhab-artifactory-snapshot</id>
      <name>JFrog Artifactory Repository</name>
      <url>https://openhab.jfrog.io/openhab/libs-snapshot</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>daily</updatePolicy>
      </snapshots>
    </repository>
  </repositories>

  <profiles>
    <profile>
      <id>with-bnd-resolver-resolve</id>
      <activation>
        <property>
          <name>withResolver</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>biz.aQute.bnd</groupId>
              <artifactId>bnd-resolver-maven-plugin</artifactId>
              <version>${bnd.version}</version>
              <executions>
                <execution>
                  <goals>
                    <goal>resolve</goal>
                  </goals>
                  <phase>package</phase>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>j21</id>
      <properties>
        <oh.java.version>21</oh.java.version>
        <maven.compiler.release>${oh.java.version}</maven.compiler.release>
      </properties>
    </profile>
  </profiles>

</project>

Then I ran mvn clean install -e -T1C -DskipTests -DskipChecks -Dspotless.check.skip=true again in the external binding folder.

I did this, and the errors went away, indeed.

I did this as well.

I then again went through all your steps, but still:

____________________________
Welcome to Apache Felix Gogo

g! mei 26, 2025 5:10:21 P.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-frontend-jaxrs (50) [org.apache.cxf.jaxrs.JAXRSBindingFactory]
mei 26, 2025 5:10:21 P.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-rs-sse (52) [org.apache.cxf.transport.sse.SseProvidersExtension]
mei 26, 2025 5:10:21 P.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-transports-http (54) [org.apache.cxf.transport.http.HTTPTransportFactory, org.apache.cxf.transport.http.HTTPWSDLExtensionLoader, org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder, org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder, org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider]
mei 26, 2025 5:10:21 P.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
mei 26, 2025 5:10:21 P.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
mei 26, 2025 5:10:21 P.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
mei 26, 2025 5:10:21 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxEventFactory of service javax.xml.stream.XMLEventFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 5:10:21 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxInputFactory of service javax.xml.stream.XMLInputFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 5:10:21 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.dtd.DTDSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 5:10:21 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.msv.RelaxNGSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 5:10:21 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.msv.W3CSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 5:10:21 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxOutputFactory of service javax.xml.stream.XMLOutputFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 5:10:21 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.aries.jax.rs.whiteboard.internal.client.ClientBuilderImpl of service javax.ws.rs.client.ClientBuilder in bundle org.apache.aries.jax.rs.whiteboard
mei 26, 2025 5:10:21 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl of service javax.ws.rs.ext.RuntimeDelegate in bundle org.apache.aries.jax.rs.whiteboard
mei 26, 2025 5:10:21 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.cxf.jaxrs.sse.client.SseEventSourceBuilderImpl of service javax.ws.rs.sse.SseEventSource.Builder in bundle org.apache.aries.jax.rs.whiteboard
mei 26, 2025 5:10:22 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http.Http1FieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.eclipse.jetty.http
mei 26, 2025 5:10:22 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http2.hpack.HpackFieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.eclipse.jetty.http2.hpack
mei 26, 2025 5:10:22 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
mei 26, 2025 5:10:22 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.fragment.FragmentExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
mei 26, 2025 5:10:22 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
mei 26, 2025 5:10:22 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.DeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
mei 26, 2025 5:10:22 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.XWebkitDeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
mei 26, 2025 5:10:22 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.server.NativeWebSocketServletContainerInitializer of service javax.servlet.ServletContainerInitializer in bundle org.eclipse.jetty.websocket.server
17:10:35.595 [WARN ] [ce.jetty.internal.JettyServerWrapper] - Can't create temporary directory for OsgiContextModel{HS,id=OCM-33,name='context:1067433196',path='/',bundle=org.apache.felix.webconsole,context=WebContainerContextWrapper{bundle=org.apache.felix.webconsole_4.7.2 [56],contextId='context:1067433196',delegate=org.apache.felix.webconsole.internal.servlet.OsgiManagerHttpContext@3f9fbcec}}: C:\Users\Erik\AppData\Local\Temp\ROOT\context:1067433196
17:10:36.548 [WARN ] [ax.web.service.spi.model.ServerModel] - ServletModel{id=ServletModel-42,name='cxf-servlet',urlPatterns=[/*],contexts=[{WB,OCM-1,default,/}]} can't be registered now in context / under "/*" mapping. Conflict with ServletModel{id=ServletModel-39,name='/',urlPatterns=[/*],contexts=[{WB,OCM-1,default,/}]}.
17:10:36.548 [WARN ] [ax.web.service.spi.model.ServerModel] - Skipped registration of ServletModel{id=ServletModel-42,name='cxf-servlet',urlPatterns=[/*],contexts=[{WB,OCM-1,default,/}]} because of existing mappings. Servlet will be added as "awaiting registration".

I wanted to test whether the binding was installed, but I don’t see the add-on store:

And when trying to add a thing manually, there seem to be two bindings installed:

Mysteries, mysteries…

Also, I now don’t know which of the two bindings is the one that will give me something to debug.

It’s hard to see what you have changed by having to look through everything, is your only change this?

  <properties>
    <enforcer.skip>true</enforcer.skip>
  </properties>

The same here - what did you actually change? I can’t see that you have added the binding as a dependency?

I’m not sure what I’m seeing here. OSGi/Bnd will create huge amount of logs, I don’t pretend to understand what they’re about as long as things work. I can only see a couple of WARNs, they might or might not be of consequence.

For the binding to be “installed” you have to add it to the dependencies, then add it to the “Run requirements” in the “Resolve/Run” window:

(just like I did with jythonscripting here)

Once that is done, you must click “Resolve” and hopefully get a successful resolution. If you do, click “Update” (I think) and then save the project. Then you can start OH with “Debug OSGi”.

I’m sorry if I’m repeating something that you have already done, but it seems to me like you might have excluded this important step.

Thank you for keeping pouring your time and effort into this! :heart:

That and the addition of https. Basically what you mentioned here: Debugging binding outside of OH repository - #17 by Nadahar.

It’s added. I also changed the “version” to 4.0.0-SNAPSHOT on line 9.

I went through all those steps, and:

I also went through that list, to check whether that binding is in there twice… But no.

But the demo app now acts like there are two identical (?) bindings, where I only expected one. Also, there’s no add-on store, which seems strange?

I shut down and restarted the demo app, now with these logs:

____________________________
Welcome to Apache Felix Gogo

g! mei 26, 2025 6:01:09 P.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-frontend-jaxrs (50) [org.apache.cxf.jaxrs.JAXRSBindingFactory]
mei 26, 2025 6:01:09 P.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-rs-sse (52) [org.apache.cxf.transport.sse.SseProvidersExtension]
mei 26, 2025 6:01:09 P.M. org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-transports-http (54) [org.apache.cxf.transport.http.HTTPTransportFactory, org.apache.cxf.transport.http.HTTPWSDLExtensionLoader, org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder, org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder, org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider]
mei 26, 2025 6:01:09 P.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
mei 26, 2025 6:01:09 P.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
mei 26, 2025 6:01:09 P.M. org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxEventFactory of service javax.xml.stream.XMLEventFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxInputFactory of service javax.xml.stream.XMLInputFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.dtd.DTDSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.msv.RelaxNGSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.msv.W3CSchemaFactory of service org.codehaus.stax2.validation.XMLValidationSchemaFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.ctc.wstx.stax.WstxOutputFactory of service javax.xml.stream.XMLOutputFactory in bundle com.fasterxml.woodstox.woodstox-core
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.aries.jax.rs.whiteboard.internal.client.ClientBuilderImpl of service javax.ws.rs.client.ClientBuilder in bundle org.apache.aries.jax.rs.whiteboard
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl of service javax.ws.rs.ext.RuntimeDelegate in bundle org.apache.aries.jax.rs.whiteboard
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.apache.cxf.jaxrs.sse.client.SseEventSourceBuilderImpl of service javax.ws.rs.sse.SseEventSource.Builder in bundle org.apache.aries.jax.rs.whiteboard
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http.Http1FieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.eclipse.jetty.http
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http2.hpack.HpackFieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.eclipse.jetty.http2.hpack
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.fragment.FragmentExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.DeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.XWebkitDeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common
mei 26, 2025 6:01:09 P.M. org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.websocket.server.NativeWebSocketServletContainerInitializer of service javax.servlet.ServletContainerInitializer in bundle org.eclipse.jetty.websocket.server
18:01:23.698 [WARN ] [ce.jetty.internal.JettyServerWrapper] - Can't create temporary directory for OsgiContextModel{HS,id=OCM-33,name='context:1398490765',path='/',bundle=org.apache.felix.webconsole,context=WebContainerContextWrapper{bundle=org.apache.felix.webconsole_4.7.2 [56],contextId='context:1398490765',delegate=org.apache.felix.webconsole.internal.servlet.OsgiManagerHttpContext@535b468d}}: C:\Users\Erik\AppData\Local\Temp\ROOT\context:1398490765

No idea why a temporary directory can’t be created (see the last WARN) and whether that’s relevant…?

Aha, I see the add-on store (or what is it called) now:

I also see a difference between both bindings: one says “jar”, and the other one “eclipse”:

But which one to use in order to get some debug logs?

But… you shouldn’t change the version of the “demo.app”..? I can’t imagine that working while having checked out OH 5.

I must admit that it has been too long for me to remember now, but I still have the add-on running, and I’m using:

  <modelVersion>4.0.0</modelVersion>

  <groupId>org.openhab.demo</groupId>
  <artifactId>org.openhab.demo.app</artifactId>
  <version>5.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>openHAB Demo :: App</name>

..and..

    <dependency>
      <groupId>org.openhab.addons.bundles</groupId>
      <artifactId>org.openhab.binding.unifiprotect</artifactId>
      <version>4.0.0-SNAPSHOT</version>
      <scope>runtime</scope>
    </dependency>

It’s only the dependency that you add that should have the version specified to the version you have built, as far as I can understand at this moment. My brain cells are trying to organize, but to no avail…

I didn’t see that you had “tricked” the comments, so I thought the whole section with this dependency was commented out :wink:

That’s normal, I always use the “jar” one and ignore the “eclipse” one. I assume that there’s another way it should be possible to do this without having to add it to the POM and all that, using the “eclipse” version, but I haven’t bothered trying to figure out how to get that to work.

I still don’t see it in your screenshot, but given that you’re running 4.0, I don’t know how it’s supposed to look like. This is how mine looks (ignore the Norwegian names for some things):

Ah, I see now that the “Add-ons Store” is displayed on the right side in the “main window” on your screenshot. I don’t know, maybe this was how it was under 4.0?

It seems to me that you have it running with OH 4 now - I’m not sure if that was the intention or not. You should be able to run it with 5.0 as a base, as you can see it’s there as “installed” in my 5.0 dev environment:

(Every binding is listed twice because of the JAR/Eclipse thing, only the JAR versions can be removed according to the UI, but of course they can’t really :wink: )

Aha!

I now altered that. It of course threw some kind of error, so I started from scratch yet again. Now it seems to be working. I added the thing via a .things file, which was a first for me. Turns out I don’t have (an option) to chose which binding.

Now the next step is figuring out (again) how to debug in Eclipse, and wait for something to actually call the function I want to debug.

But that’s not for today!

Thanks for your guidance!

Debugging in Eclipse is easy: Just set a breakpoint somewhere in the add-on code where you want to see what happens, and wait for it to be executed. Eclipse will suspect the thread or threads that reach (one of) the breakpoint(s) and you can step manually from there, inspecting variables etc.

To set a breakpoint, double-click or right-click on the narrow space to the left of the line numbers in the Eclipse editor.

Sounds great, but I’m sure it’ll get challenging :wink:

But I think that would then be something for a new topic.

Does the same apply for Items?

I’m not sure, only ThingManager has been the topic in what I’ve read about this issue, but other things might be affected too. The easiest is to just try…

If you want more information about the problem, you can find some here (and in the links from that topic):

Actually, from what I understand, this should have fixed the issue:

https://github.com/openhab/openhab-distro/pull/1697

Are we sure that this problem still applies, or did you experience some other problem that I interpreted as being this one?

I haven’t attempted to use managed Things in the dev environment since, I’ve just stuck to files, so I won’t have noticed if it has been fixed.

I didn’t retest it yesterday, but my earlier encounter with it was after the PR merge.

Then again, I ran 4.0.0-SNAPSHOT then, which may not have included the merge. I’ll test it later today (I hope).