cfig
(Tom C)
May 30, 2025, 7:15pm
1
I know this movie has played here before.
Vanilla macOS installation running from a directory: no docker, no apt-get, nada. The cast of offending characters is thus very limited.
Java 17 was installed.
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment Temurin-17.0.9+9 (build 17.0.9+9)
OpenJDK 64-Bit Server VM Temurin-17.0.9+9 (build 17.0.9+9, mixed mode)
OpenHAB directory was updated in place.
runtime/bin/update 4.0.0
Deleting temporary files...
Restoring previous file ownership (tom:staff)
Starting JSON database update...
JSON database updated successfully.
SUCCESS: openHAB updated from 3.4.4 to 4.0.0
Errors on startup:
(I’m hoping it’s something simple.)
2025-05-30 14:07:53.042 [ERROR] [ternal.service.BootFeaturesInstaller] - Error installing boot features
org.apache.felix.resolver.reason.ReasonException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=openhab-runtime-ui; type=karaf.feature; version=“[4.0.0,4.0.0]”; filter:=“(&(osgi.identity=openhab-runtime-ui)(type=karaf.feature)(version>=4.0.0)(version<=4.0.0))” [caused by: Unable to resolve openhab-runtime-ui/4.0.0: missing requirement [openhab-runtime-ui/4.0.0] osgi.identity; osgi.identity=openhab-runtime-base; type=karaf.feature [caused by: Unable to resolve openhab-runtime-base/4.0.0: missing requirement [openhab-runtime-base/4.0.0] osgi.identity; osgi.identity=openhab-core-base; type=karaf.feature [caused by: Unable to resolve openhab-core-base/4.0.0: missing requirement [openhab-core-base/4.0.0] osgi.identity; osgi.identity=org.openhab.core.config.core; type=osgi.bundle; version=“[4.0.0,4.0.0]”; resolution:=mandatory [caused by: Unable to resolve org.openhab.core.config.core/4.0.0: missing requirement [org.openhab.core.config.core/4.0.0] osgi.wiring.package; filter:=“(&(osgi.wiring.package=org.openhab.core.common.registry)(version>=4.0.0)(!(version>=5.0.0)))” [caused by: Unable to resolve org.openhab.core/4.0.0: missing requirement [org.openhab.core/4.0.0] osgi.ee; filter:=“(&(osgi.ee=JavaSE)(version=17))”]]]]]
rlkoshak
(Rich Koshak)
May 30, 2025, 7:40pm
2
Make sure that OH is actually using the new JDK. If the old one is still in the path it might be trying to run with Java 1.8 instead. The error seems to think it’s not running on 17. Review the installation instructions you followed and make sure that what ever environment variables or configuration files you needed to change to get it running the first time are updated to point to the new JDK.
Why upgrade to 4.0? Why not jump straight to 4.3? Note that 5.0 will be released in a couple of months.
cfig
(Tom C)
May 30, 2025, 8:21pm
3
Thanks, I’ll check - but that was not a new Java install.
OH 3.4.4 ran with Java 17. My standard JRE/JDK for some time.
bash-3.2$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
I’ll just post the entire log. Something else might jump out.
2025-05-30 14:07:53.042 [ERROR] [ternal.service.BootFeaturesInstaller] - Error installing boot features
org.apache.felix.resolver.reason.ReasonException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=openhab-runtime-ui; type=karaf.feature; version=“[4.0.0,4.0.0]”; filter:=“(&(osgi.identity=openhab-runtime-ui)(type=karaf.feature)(version>=4.0.0)(version<=4.0.0))” [caused by: Unable to resolve openhab-runtime-ui/4.0.0: missing requirement [openhab-runtime-ui/4.0.0] osgi.identity; osgi.identity=openhab-runtime-base; type=karaf.feature [caused by: Unable to resolve openhab-runtime-base/4.0.0: missing requirement [openhab-runtime-base/4.0.0] osgi.identity; osgi.identity=openhab-core-base; type=karaf.feature [caused by: Unable to resolve openhab-core-base/4.0.0: missing requirement [openhab-core-base/4.0.0] osgi.identity; osgi.identity=org.openhab.core.config.core; type=osgi.bundle; version=“[4.0.0,4.0.0]”; resolution:=mandatory [caused by: Unable to resolve org.openhab.core.config.core/4.0.0: missing requirement [org.openhab.core.config.core/4.0.0] osgi.wiring.package; filter:=“(&(osgi.wiring.package=org.openhab.core.common.registry)(version>=4.0.0)(!(version>=5.0.0)))” [caused by: Unable to resolve org.openhab.core/4.0.0: missing requirement [org.openhab.core/4.0.0] osgi.ee; filter:=“(&(osgi.ee=JavaSE)(version=17))”]]]]]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:433) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:420) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:374) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:256) ~[?:?]
at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:399) ~[?:?]
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1069) ~[?:?]
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:1004) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:829) ~[?:?]
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve openhab-runtime-ui/4.0.0: missing requirement [openhab-runtime-ui/4.0.0] osgi.identity; osgi.identity=openhab-runtime-base; type=karaf.feature [caused by: Unable to resolve openhab-runtime-base/4.0.0: missing requirement [openhab-runtime-base/4.0.0] osgi.identity; osgi.identity=openhab-core-base; type=karaf.feature [caused by: Unable to resolve openhab-core-base/4.0.0: missing requirement [openhab-core-base/4.0.0] osgi.identity; osgi.identity=org.openhab.core.config.core; type=osgi.bundle; version=“[4.0.0,4.0.0]”; resolution:=mandatory [caused by: Unable to resolve org.openhab.core.config.core/4.0.0: missing requirement [org.openhab.core.config.core/4.0.0] osgi.wiring.package; filter:=“(&(osgi.wiring.package=org.openhab.core.common.registry)(version>=4.0.0)(!(version>=5.0.0)))” [caused by: Unable to resolve org.openhab.core/4.0.0: missing requirement [org.openhab.core/4.0.0] osgi.ee; filter:=“(&(osgi.ee=JavaSE)(version=17))”]]]]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
… 12 more
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve openhab-runtime-base/4.0.0: missing requirement [openhab-runtime-base/4.0.0] osgi.identity; osgi.identity=openhab-core-base; type=karaf.feature [caused by: Unable to resolve openhab-core-base/4.0.0: missing requirement [openhab-core-base/4.0.0] osgi.identity; osgi.identity=org.openhab.core.config.core; type=osgi.bundle; version=“[4.0.0,4.0.0]”; resolution:=mandatory [caused by: Unable to resolve org.openhab.core.config.core/4.0.0: missing requirement [org.openhab.core.config.core/4.0.0] osgi.wiring.package; filter:=“(&(osgi.wiring.package=org.openhab.core.common.registry)(version>=4.0.0)(!(version>=5.0.0)))” [caused by: Unable to resolve org.openhab.core/4.0.0: missing requirement [org.openhab.core/4.0.0] osgi.ee; filter:=“(&(osgi.ee=JavaSE)(version=17))”]]]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
… 12 more
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve openhab-core-base/4.0.0: missing requirement [openhab-core-base/4.0.0] osgi.identity; osgi.identity=org.openhab.core.config.core; type=osgi.bundle; version=“[4.0.0,4.0.0]”; resolution:=mandatory [caused by: Unable to resolve org.openhab.core.config.core/4.0.0: missing requirement [org.openhab.core.config.core/4.0.0] osgi.wiring.package; filter:=“(&(osgi.wiring.package=org.openhab.core.common.registry)(version>=4.0.0)(!(version>=5.0.0)))” [caused by: Unable to resolve org.openhab.core/4.0.0: missing requirement [org.openhab.core/4.0.0] osgi.ee; filter:=“(&(osgi.ee=JavaSE)(version=17))”]]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
… 12 more
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve org.openhab.core.config.core/4.0.0: missing requirement [org.openhab.core.config.core/4.0.0] osgi.wiring.package; filter:=“(&(osgi.wiring.package=org.openhab.core.common.registry)(version>=4.0.0)(!(version>=5.0.0)))” [caused by: Unable to resolve org.openhab.core/4.0.0: missing requirement [org.openhab.core/4.0.0] osgi.ee; filter:=“(&(osgi.ee=JavaSE)(version=17))”]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
… 12 more
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve org.openhab.core/4.0.0: missing requirement [org.openhab.core/4.0.0] osgi.ee; filter:=“(&(osgi.ee=JavaSE)(version=17))”
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[org.eclipse.osgi-3.18.0.jar:?]
… 12 more
cfig
(Tom C)
May 30, 2025, 8:57pm
4
Actually, you suggested 4.0.
https://community.openhab.org/t/js-scripting-error-undefined-has-no-such-function-persist/155826/16
You can try to upgrade to 4.0 and see if that works, then try to move up to 4.1 and so on until it breaks. But keep in mind that almost every release in those earlier versions had breaking changes which means you have to make changes to your code to keep them working.
cfig
(Tom C)
May 30, 2025, 9:36pm
5
I thought I was running JDK 17. I downloaded 4.3.5 and when I tried to start it it complained that I was running JDK 11.
The updated 4.0.0 started OK when I specified JDK 17. There are some log file permission errors probably left over from running the update as root but that should be simple enough to sort out.
Thanks for not yelling.
rlkoshak
(Rich Koshak)
May 31, 2025, 2:28pm
6
I also said in that thread that the OH version and the version of openhab-js are not the same and independent. I suggested you upgrade openhab-js to 4.0 using npm on the command line (see the docs for the JS Scripting add-ons for details). Because openhab-js is just a node library, you can manage it independently from openHAB. Though I recommend always using the version that comes with the add-on as that is guaranteed to work with the version of OH you are running.
If you are planning on upgrading all of OH, you should upgrade to the latest release and the JS Scripting add-on will come with the latest version of openhab-js which is 5.11.1 I think.
One other thing to note, when looking at the docs for an older OH version, there is a tab at the upper left in the docs where you can choose your OH version. Then you will see the docs for your version of OH and not the latest release. You won’t run into problems where there is stuff documented that were added after your version of OH was released.