I`m new at this docker images, but i have it as task that i already fight for 1 month with google forums and chatGPT.
I have the following problem, i create a dockerfile and now docker-compose file.
Then i build this docker-compose file and its work ok on my MacBook and on Windows users and Lin users, but on my Mac it start and when its need to use native library as nd4j, its crash with error that it can not load it.
I try with chatGPT to solve this problem because i`m far away from docker and with google, but no success.
Here is the stack trace :
app-1 | 16:36:11.123 [http-nio-8080-exec-4] ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.ExceptionInInitializerError] with root cause
app-1 | java.lang.UnsatisfiedLinkError: Could not find jnind4jcpu in class, module, and library paths.
app-1 | at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1799) ~[javacpp-1.5.10.jar!/:1.5.10]
app-1 | at org.bytedeco.javacpp.Loader.load(Loader.java:1423) ~[javacpp-1.5.10.jar!/:1.5.10]
app-1 | at org.bytedeco.javacpp.Loader.load(Loader.java:1234) ~[javacpp-1.5.10.jar!/:1.5.10]
app-1 | at org.bytedeco.javacpp.Loader.load(Loader.java:1210) ~[javacpp-1.5.10.jar!/:1.5.10]
app-1 | at org.nd4j.linalg.cpu.nativecpu.bindings.Nd4jCpu.<clinit>(Nd4jCpu.java:14) ~[nd4j-native-1.0.0-M2.1.jar!/:?]
app-1 | at java.base/java.lang.Class.forName0(Native Method) ~[?:?]
app-1 | at java.base/java.lang.Class.forName(Class.java:534) ~[?:?]
app-1 | at java.base/java.lang.Class.forName(Class.java:513) ~[?:?]
app-1 | at org.nd4j.common.config.ND4JClassLoading.loadClassByName(ND4JClassLoading.java:62) ~[nd4j-common-1.0.0-M2.1.jar!/:?]
app-1 | at org.nd4j.common.config.ND4JClassLoading.loadClassByName(ND4JClassLoading.java:56) ~[nd4j-common-1.0.0-M2.1.jar!/:?]
app-1 | at org.nd4j.nativeblas.NativeOpsHolder.<init>(NativeOpsHolder.java:97) ~[nd4j-native-api-1.0.0-M2.1.jar!/:?]
app-1 | at org.nd4j.nativeblas.NativeOpsHolder.<clinit>(NativeOpsHolder.java:41) ~[nd4j-native-api-1.0.0-M2.1.jar!/:?]
app-1 | at org.nd4j.linalg.cpu.nativecpu.ops.NativeOpExecutioner.<init>(NativeOpExecutioner.java:79) ~[nd4j-native-1.0.0-M2.1.jar!/:?]
app-1 | at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[?:?]
app-1 | at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[?:?]
app-1 | at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) ~[?:?]
app-1 | at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:304) ~[?:?]
app-1 | at java.base/java.lang.Class.newInstance(Class.java:725) ~[?:?]
app-1 | at org.nd4j.linalg.factory.Nd4j.initWithBackend(Nd4j.java:5152) ~[nd4j-api-1.0.0-M2.1.jar!/:?]
app-1 | at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5064) ~[nd4j-api-1.0.0-M2.1.jar!/:?]
app-1 | at org.nd4j.linalg.factory.Nd4j.<clinit>(Nd4j.java:284) ~[nd4j-api-1.0.0-M2.1.jar!/:?]
app-1 | at proect.caves.utils.ImagePreprocessingUtils.convertHWCtoCHW(ImagePreprocessingUtils.java:81) ~[!/:?]
app-1 | at proect.caves.utils.ImagePreprocessingUtils.img2OnnxTensor(ImagePreprocessingUtils.java:29) ~[!/:?]
app-1 | at proect.caves.service.YoloObjectDetectorService.getOnnxTensor(YoloObjectDetectorService.java:103) ~[!/:?]
app-1 | at proect.caves.service.YoloObjectDetectorService.getStringOnnxTensorMap(YoloObjectDetectorService.java:81) ~[!/:?]
app-1 | at proect.caves.service.YoloObjectDetectorService.getResults(YoloObjectDetectorService.java:39) ~[!/:?]
app-1 | at proect.caves.service.YoloObjectDetectorService.validateResults(YoloObjectDetectorService.java:61) ~[!/:?]
app-1 | at proect.caves.web.HomeController.homePage(HomeController.java:41) ~[!/:?]
app-1 | at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?]
app-1 | at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
app-1 | at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) ~[spring-web-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) ~[spring-web-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) ~[spring-webmvc-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) ~[spring-webmvc-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) ~[spring-webmvc-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) ~[spring-webmvc-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.1.8.jar!/:6.1.8]
app-1 | at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.1.8.jar!/:6.1.8]
app-1 | at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.8.jar!/:6.1.8]
app-1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.8.jar!/:6.1.8]
app-1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.1.8.jar!/:6.1.8]
app-1 | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.8.jar!/:6.1.8]
app-1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:389) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-embed-core-10.1.24.jar!/:?]
app-1 | at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
Fun and Games is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.