KNIME SDK setup on Mac M2

Dear all,
I am now working on a Macbook Pro M2 (MacOS Ventura).
I wanted to setup the KNIME SDK for KNIME 4.7.
I followed the KNIME-SDK instructions (https://github.com/knime/knime-sdk-setup/tree/releases/2023-03)

This is my Eclipse
Version: 2023-03 (4.27.0)
Build id: 20230309-1520

Still, launching KNIME fails with the following error message. What did I miss?
I was also a bit confused that the target platform is titled “nightly” (KNIME-AP-complete.target) while the API baseline is “4.7” (API-Baseline.target).

!SESSION 2023-06-05 10:29:23.742 -----------------------------------------------
eclipse.buildId=unknown
java.version=17.0.7
java.vendor=Eclipse Adoptium
BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_DE
Framework arguments:  -product org.knime.product.KNIME_PRODUCT
Command-line arguments:  -product org.knime.product.KNIME_PRODUCT -data /Users/niederle/knimeDev/Eclipse-ws/eclipse_2023-03_knime4.7/../runtime-KNIME -dev file:/Users/niederle/knimeDev/Eclipse-ws/eclipse_2023-03_knime4.7/.metadata/.plugins/org.eclipse.pde.core/KNIME Analytics Platform/dev.properties -os macosx -ws cocoa -arch x86_64 -consoleLog

!ENTRY org.eclipse.osgi 4 0 2023-06-05 10:29:28.626
!MESSAGE Application error
!STACK 1
java.lang.UnsatisfiedLinkError: /Users/niederle/knimeDev/Eclipse-ws/eclipse_2023-03_knime4.7/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/com.equo.chromium.cef.cocoa.macosx.x86_64_106.0.6/chromium-5249/libequochro.dylib: dlopen(/Users/niederle/knimeDev/Eclipse-ws/eclipse_2023-03_knime4.7/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/com.equo.chromium.cef.cocoa.macosx.x86_64_106.0.6/chromium-5249/libequochro.dylib, 0x0001): tried: '/Users/niederle/knimeDev/Eclipse-ws/eclipse_2023-03_knime4.7/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/com.equo.chromium.cef.cocoa.macosx.x86_64_106.0.6/chromium-5249/libequochro.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/niederle/knimeDev/Eclipse-ws/eclipse_2023-03_knime4.7/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/com.equo.chromium.cef.cocoa.macosx.x86_64_106.0.6/chromium-5249/libequochro.dylib' (no such file), '/Users/niederle/knimeDev/Eclipse-ws/eclipse
	at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
	at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389)
	at java.base/java.lang.Runtime.load0(Runtime.java:755)
	at java.base/java.lang.System.load(System.java:1953)
	at com.equo.chromium.internal.Engine$1.loadLibrary(Engine.java:80)
	at org.cef.SystemBootstrap.loadLibrary(SystemBootstrap.java:36)
	at org.cef.CefApp.startup(CefApp.java:569)
	at com.equo.chromium.internal.Engine.loadLib(Engine.java:87)
	at com.equo.chromium.internal.Engine.<clinit>(Engine.java:46)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:375)
	at com.equo.chromium.ChromiumBrowser.earlyInit(ChromiumBrowser.java:145)
	at org.knime.js.cef.CEFEarlyStartup.run(CEFEarlyStartup.java:71)
	at org.knime.core.util.IEarlyStartup.executeEarlyStartup(IEarlyStartup.java:106)
	at org.knime.product.rcp.KNIMEApplication.start(KNIMEApplication.java:127)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1440)

I just realized one thing:
KNIME 4.7 should run on Eclipse 2022-06 instead of 2023-03.
I will give it a try.

1 Like

Hi,
Did you also install the x86 Eclipse? Because that is what is recommended even for Apple Silicon in the SDK readme.
Kind regards,
Alexander

Yes, I did.

Unfortunately, even using Eclipse 2022-06 did not solve the issue.

I missed the following message in my first description. When trying to launch KNIME, I first get this:

If I then choose ‘Continue’, I get the error message posted above.

Best,
Antje

Hi, I don’t think it makes a difference whether it’s M1 or M2, so here goes my working setup:

  • M1 (Pro)
  • Eclipse Version: 2022-06 (4.24.0) (Build id: 20220609-1112) – the same version as the KAP version you want to work on is based on (or lower). For example, I have had the problem that JUnit5 tests were not run if I use a newer Eclipse version than what KAP uses.
  • OpenJDK Runtime Environment Temurin-17.0.6
  • aarch64/arm64 builds

I also use the aarch64/arm64 builds of both Eclipse and OpenJDK, which work fine, except that there is no Tableau binaries, so I excluded the corresponding extension from the target platform.
I think you can use Rosetta and use the x86_64 build of Eclipse and OpenJDK. If you, like me, use a version manager of some sort for installing OpenJDK, make sure to run it in a x86_64 shell. I used asdf and it installed a build I wasn’t expecting since the shell did not run under Rosetta. GitHub - halcyon/asdf-java: A Java plugin for asdf-vm.

Also of note is that the branch you are working on is for the 5.0 version. The branch for the 4.7 release line is 2022-12 (since it was released in December).

My setup above works for all both 2022-12 and master/2023-07 branches (with the exception of Tableau), so I’m happy to assist further.

3 Likes

Hi,
thanks a lot for your answer.

I’m a bit confused now:
Can you please help where I can find the information which release-branch belongs to which KNIME version? Previously the version was at least named in the target platform definition. Which now tells ‘nightly’ (release branch 2023-03). As I have no experience using API-baselines, I thought the version mentioned there is the version belonging to that release (which tells 4.7 here). But it’s the previous version?

Second question:
If the JDK is an aarch64/arm64 build (I just checked my installation), would it work with the x86_64 build of Eclipse?
I do not use a version manager for my JDK installations.

I also tried to setup the SDK for KNIME 5. With Eclipse (aarch64/arm64 build) I also came to that point that I had to remove the tableau entries from the target defintion

Edit: KNIME 5 launches! At least this seems to work now. :slight_smile:

Sorry, if I create even more confusion.

The correspondence of KAP version and branch is mentioned in the last “NOTE” paragraph under “Target Platform” in the Readme.
So what’s probably relevant for you:

  • branch releases/2022-12:
    • 4.7 release line
    • based on Eclipse 2022-06 framework
    • use Eclipse IDE 2022-06
  • branch releases/2023-07: 5.1 release line (currently still the same as master)
    • 5.1 release line
    • based on Eclipse 2023-03 framework
    • use Eclipse IDE 2023-03

The 5.0 Early Access release line is just a preview and I would not target that one, since 5.1 is just around the corner and contains many improvements (so you can ignore the releases/2023-03 branch).

In any case, mixing Eclipse and JDK architectures leads to problems loading native libraries. If you like a snappy IDE and don’t need to worry about Tableau, I would install the aarch64 JDK and Eclipse version. In my experience, I don’t have problems working on either of the two relevant release lines with the aarch64 stuff.

In order for JUnit5 tests to be picked up correctly, you need to use Eclipse in the same version (sorry, lower doesn’t work I realised…) as the Eclipse framework that KAP uses (so matching year-month from the list above).

2 Likes

Thank you very much!

I see, it’s pretty hidden and I want to mention that the Releases link within here:

You can find out when a specific version of KNIME Analytics Platform was released on the Releases page of the knime-core GitHub repository (e.g. the date on 3 Dec 2020 for analytics-platform/4.3.0 corresponds to the branch name 2020-12).

does not lead to any further information.

I was not aware that this might lead to issues. Thanks for pointing that out.

With you help, I was able to resolve all issues.
SDKs for KNIME 5.1 and KNIME 4.7 are working now :slight_smile:

Thanks a lot again!

3 Likes

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.