Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrong host architectures for Java bindings #4

Closed
1 task done
purejava opened this issue Jan 10, 2024 · 3 comments
Closed
1 task done

Wrong host architectures for Java bindings #4

purejava opened this issue Jan 10, 2024 · 3 comments
Labels
bug Something isn't working upstream This is an upstream bug

Comments

@purejava
Copy link
Owner

Please agree to the following

Summary

Wrong host architectures for Java bindings

What software is involved?

  • Operating System: Apple Intel (darwin-x86-64)
  • Cryptomator: 1.11.1
  • cryptomator-bitwarden-0.4.0-SNAPSHOT.jar

Steps to Reproduce

  1. Put the plug-in in the appropriate directory so that Cryptomator finds it
  2. Start Cryptomator

Expected Behavior

Cryptomator starts and shows the main window

Actual Behavior

Cryptomator fails to show the main window, as the underlying Bitwarden plug-in fails to initialize

Reproducibility

Always

Relevant Log Output

Caused by: java.lang.UnsatisfiedLinkError: Unable to load library 'bitwarden_c':
dlopen(libbitwarden_c.dylib, 0x0009): tried: 'libbitwarden_c.dylib' (relative path not allowed in hardened program), '/System/Volumes/Preboot/Cryptexes/OSlibbitwarden_c.dylib' (no such file), '/Applications/Cryptomator.app/Contents/Frameworks/libbitwarden_c.dylib' (no such file), '/Applications/Cryptomator.app/Contents/PlugIns/libbitwarden_c.dylib' (no such file), '/usr/lib/libbitwarden_c.dylib' (no such file, not in dyld cache), 'libbitwarden_c.dylib' (relative path not allowed in hardened program), '/usr/lib/libbitwarden_c.dylib' (no such file, not in dyld cache)
dlopen(libbitwarden_c.dylib, 0x0009): tried: 'libbitwarden_c.dylib' (relative path not allowed in hardened program), '/System/Volumes/Preboot/Cryptexes/OSlibbitwarden_c.dylib' (no such file), '/Applications/Cryptomator.app/Contents/Frameworks/libbitwarden_c.dylib' (no such file), '/Applications/Cryptomator.app/Contents/PlugIns/libbitwarden_c.dylib' (no such file), '/usr/lib/libbitwarden_c.dylib' (no such file, not in dyld cache), 'libbitwarden_c.dylib' (relative path not allowed in hardened program), '/usr/lib/libbitwarden_c.dylib' (no such file, not in dyld cache)
dlopen(/Users/ralph/Library/Frameworks/bitwarden_c.framework/bitwarden_c, 0x0009): tried: '/Users/ralph/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/ralph/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/Users/ralph/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file, not in dyld cache)
dlopen(/Library/Frameworks/bitwarden_c.framework/bitwarden_c, 0x0009): tried: '/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file, not in dyld cache)
dlopen(/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c, 0x0009): tried: '/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file, not in dyld cache)
Native library (darwin-x86-64/libbitwarden_c.dylib) not found in resource path ([file:/Users/ralph/Library/Application%20Support/Cryptomator/Plugins/cryptomator-bitwarden-0.4.0-SNAPSHOT.jar])
	at com.sun.jna@5.12.1/com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:307)
	at com.sun.jna@5.12.1/com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:467)
	at com.sun.jna@5.12.1/com.sun.jna.Library$Handler.<init>(Library.java:192)
	at com.sun.jna@5.12.1/com.sun.jna.Native.load(Native.java:622)
	at com.sun.jna@5.12.1/com.sun.jna.Native.load(Native.java:596)
	at com.bitwarden.sdk.BitwardenClient.<init>(BitwardenClient.java:31)
	at org.purejava.integrations.keychain.BitwardenAccess.<init>(BitwardenAccess.java:39)
	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
	... 57 common frames omitted
	Suppressed: java.lang.UnsatisfiedLinkError: dlopen(libbitwarden_c.dylib, 0x0009): tried: 'libbitwarden_c.dylib' (relative path not allowed in hardened program), '/System/Volumes/Preboot/Cryptexes/OSlibbitwarden_c.dylib' (no such file), '/Applications/Cryptomator.app/Contents/Frameworks/libbitwarden_c.dylib' (no such file), '/Applications/Cryptomator.app/Contents/PlugIns/libbitwarden_c.dylib' (no such file), '/usr/lib/libbitwarden_c.dylib' (no such file, not in dyld cache), 'libbitwarden_c.dylib' (relative path not allowed in hardened program), '/usr/lib/libbitwarden_c.dylib' (no such file, not in dyld cache)
		at com.sun.jna@5.12.1/com.sun.jna.Native.open(Native Method)
		at com.sun.jna@5.12.1/com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:197)
		... 66 common frames omitted
	Suppressed: java.lang.UnsatisfiedLinkError: dlopen(libbitwarden_c.dylib, 0x0009): tried: 'libbitwarden_c.dylib' (relative path not allowed in hardened program), '/System/Volumes/Preboot/Cryptexes/OSlibbitwarden_c.dylib' (no such file), '/Applications/Cryptomator.app/Contents/Frameworks/libbitwarden_c.dylib' (no such file), '/Applications/Cryptomator.app/Contents/PlugIns/libbitwarden_c.dylib' (no such file), '/usr/lib/libbitwarden_c.dylib' (no such file, not in dyld cache), 'libbitwarden_c.dylib' (relative path not allowed in hardened program), '/usr/lib/libbitwarden_c.dylib' (no such file, not in dyld cache)
		at com.sun.jna@5.12.1/com.sun.jna.Native.open(Native Method)
		at com.sun.jna@5.12.1/com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:210)
		... 66 common frames omitted
	Suppressed: java.lang.UnsatisfiedLinkError: dlopen(/Users/ralph/Library/Frameworks/bitwarden_c.framework/bitwarden_c, 0x0009): tried: '/Users/ralph/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/ralph/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/Users/ralph/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file, not in dyld cache)
		at com.sun.jna@5.12.1/com.sun.jna.Native.open(Native Method)
		at com.sun.jna@5.12.1/com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:254)
		... 66 common frames omitted
	Suppressed: java.lang.UnsatisfiedLinkError: dlopen(/Library/Frameworks/bitwarden_c.framework/bitwarden_c, 0x0009): tried: '/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file, not in dyld cache)
		at com.sun.jna@5.12.1/com.sun.jna.Native.open(Native Method)
		at com.sun.jna@5.12.1/com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:254)
		... 66 common frames omitted
	Suppressed: java.lang.UnsatisfiedLinkError: dlopen(/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c, 0x0009): tried: '/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file), '/System/Library/Frameworks/bitwarden_c.framework/bitwarden_c' (no such file, not in dyld cache)
		at com.sun.jna@5.12.1/com.sun.jna.Native.open(Native Method)
		at com.sun.jna@5.12.1/com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:254)
		... 66 common frames omitted
	Suppressed: java.io.IOException: Native library (darwin-x86-64/libbitwarden_c.dylib) not found in resource path ([file:/Users/ralph/Library/Application%20Support/Cryptomator/Plugins/cryptomator-bitwarden-0.4.0-SNAPSHOT.jar])
		at com.sun.jna@5.12.1/com.sun.jna.Native.extractFromResourcePath(Native.java:1145)
		at com.sun.jna@5.12.1/com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:281)
		... 66 common frames omitted

Anything else?

libbitwarden_c.dylib is contained in the resource jar file, but cannot be found.
Renaming the folder the libraries are stored in within the jar file from darwin-x64 to darwin-x86-64 solves the issue.

This is probably a problem on other architectures too, as the libraries for Linux are stored in ubuntu-x64 instead of linux-x64.

@purejava purejava added the bug Something isn't working label Jan 10, 2024
@purejava
Copy link
Owner Author

When the Java bindings of the Bitwarden SDK are used in a Java application, the bitwarden_c library is provided for the following host architectures:
Eingefügtes Bild

@purejava purejava added the upstream This is an upstream bug label Jan 10, 2024
@purejava purejava changed the title Native library (darwin-x86-64/libbitwarden_c.dylib) not found in resource path ([file:/Users/ralph/Library/Application%20Support/Cryptomator/Plugins/cryptomator-bitwarden-0.4.0-SNAPSHOT.jar]) Wrong host architectures for Java bindings Jan 11, 2024
@purejava
Copy link
Owner Author

This is probably a problem on other architectures too, as the libraries for Linux are stored in ubuntu-x64 instead of linux-x64.

Some additional info: the same issue occurs on Windows 11 and Linuxes. Here is the relevant part of the stack-trace on Windows:

Native library (win32-x86-64/bitwarden_c.dll) not found in resource path ([file:/C:/Users/ralph/AppData/Roaming/Cryptomator/Plugins/cryptomator-bitwarden-0.4.0-SNAPSHOT.jar])

These paths are configured by the SDK versus used by JNA to load the bitwarden_c library:

Host SDK path JNA path
Apple Intel darwin-x64 darwin-x86-64
Arch Linux x86_64 / KUbuntu 23.10 x86_64 ubuntu-x64 linux-x86-64
Windows 11 x64 windows-x64 win32-x86-64

@purejava
Copy link
Owner Author

Fixed upstream with bitwarden/sdk#498.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working upstream This is an upstream bug
Projects
None yet
Development

No branches or pull requests

1 participant