nativelibs4java / BridJ

BridJ: blazing fast Java / C / C++ interop
https://code.google.com/archive/p/bridj/
Other
289 stars 77 forks source link

Support for ARM64 #111

Closed gabrielandrade2 closed 1 year ago

gabrielandrade2 commented 3 years ago

Does the library have support to run on arm64 (aarch64) platforms? I get the following errors when trying to run a project with BridJ:

Caused by: java.lang.UnsatisfiedLinkError: org.bridj.Platform.sizeOf_ptrdiff_t()I
        at org.bridj.Platform.sizeOf_ptrdiff_t(Native Method)
        at org.bridj.Platform.<clinit>(Platform.java:232)
        at com.github.sarxos.webcam.ds.buildin.natives.OpenIMAJGrabber.<clinit>(OpenIMAJGrabber.java:59)
        at com.github.sarxos.webcam.ds.buildin.WebcamDefaultDriver$WebcamNewGrabberTask.handle(WebcamDefaultDriver.java:55)
        at com.github.sarxos.webcam.WebcamProcessor$AtomicProcessor.run(WebcamProcessor.java:81)
Caused by: java.lang.UnsatisfiedLinkError: /tmp/BridJExtractedLibraries4849827829169528045/libbridj.so: /tmp/BridJExtractedLibraries4849827829169528045/libbridj.so: cannot open shared object file: No such file or directory (Possible cause: can't load AMD 64-bit .so on a AARCH64-bit platform)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1086)
    at org.bridj.Platform.initLibrary(Platform.java:420)
    ... 7 more
FoxieFlakey commented 2 years ago

i think you have to compile/build the BridJ by yourself

davehun commented 2 years ago

compiling doesn't help Running org.bridj.UnknownStructTest java.lang.RuntimeException: Failed to initialize BridJ (java.lang.UnsatisfiedLinkError: Can't load library: /var/folders/g9/cnd4z6w93qx6b84st645nqqw0000gn/T/BridJExtractedLibraries6377971470240802105/libbridj.dylib) at org.bridj.Platform.initLibrary(Platform.java:447) at org.bridj.Platform.<clinit>(Platform.java:231) at org.bridj.BridJ.register(BridJ.java:193) at org.bridj.UnknownStructTest.<clinit>(UnknownStructTest.java:45) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:217) at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:266) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283) at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128) at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) Caused by: java.lang.UnsatisfiedLinkError: Can't load library: /var/folders/g9/cnd4z6w93qx6b84st645nqqw0000gn/T/BridJExtractedLibraries6377971470240802105/libbridj.dylib at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2393) at java.base/java.lang.Runtime.load0(Runtime.java:755) at java.base/java.lang.System.load(System.java:1953) at org.bridj.Platform.initLibrary(Platform.java:423) ... 27 more Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.028 sec <<< FAILURE! - in org.bridj.UnknownStructTest test(org.bridj.UnknownStructTest) Time elapsed: 0.003 sec <<< ERROR! java.lang.UnsatisfiedLinkError: 'int org.bridj.Platform.sizeOf_ptrdiff_t()' at org.bridj.Platform.sizeOf_ptrdiff_t(Native Method) at org.bridj.Platform.<clinit>(Platform.java:235) at org.bridj.BridJ.register(BridJ.java:193)

gabrielandrade2 commented 2 years ago

I haven't worked with this since then, but as long as I have researched back then, BridJ does not have arm64 support, that's why I opened this issue ticket. So compiling won't work.

0xD8C4A475 commented 1 year ago

Same. After this "hack": https://github.com/languagetool-org/languagetool/issues/4543#issuecomment-811958392 Next problem: OpenIMAJGrabber.so

dshup commented 1 year ago

Did this issue been fixed ? I got this issue on aarch64 platform with use webcam-capture

ochafik commented 1 year ago

The fresh new 0.8.0-SNAPSHOT has some binaries for Linux & Mac arm64 but it's still largely untested (I don't have access to an M1 mac yet, for starters).

ochafik commented 1 year ago

Now (fixed and) tested on aarch64 Linux.

Mac M1 support tracked separately in https://github.com/nativelibs4java/BridJ/issues/115

ochafik commented 1 year ago

Note: please take a look at the Download page to know how to get the snapshot.