haifengl / smile

Statistical Machine Intelligence & Learning Engine
https://haifengl.github.io
Other
5.99k stars 1.12k forks source link

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopenblas_nolapack in java.library.path #722

Closed dongdongunique closed 2 years ago

dongdongunique commented 2 years ago

Describe the bug When I used the OLS in the smile.regression, the compiler shows "Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopenblas_nolapack in java.library.path"

Here is the code: Table data=Table.read().csv("processed.csv");
data.removeColumns("city"); LinearModel osl=OLS.fit(Formula.lhs("price"), data.smile().toDataFrame());

where city is a string column, so I throw it away;

I used java 17 on the windows and vscode. The version of smile is 2.6.0

haifengl commented 2 years ago

You miss BLAS/LAPACK on your system. The easiest way is to add smile-mkl as a dependency.

dongdongunique commented 2 years ago

However, when I add smile-mkl dependency to the maven, it shows a new error:

"The container 'Maven Dependencies' references non existing library 'C:\Users\dongdongunique.m2\repository\org\bytedeco\mkl\2020.3-1.5.4\mkl-2020.3-1.5.4-linux-x86_64.jar'"

but my system is windows, I do not know how to solve this problem .

haifengl commented 2 years ago

try these dependencies.

"org.bytedeco" % "javacpp"   % "1.5.7"        classifier "windows-x86_64",
"org.bytedeco" % "openblas"  % "0.3.19-1.5.7" classifier "windows-x86_64",
"org.bytedeco" % "arpack-ng" % "3.8.0-1.5.7"  classifier "windows-x86_64"

You may need to remove smile-mkl.

dongdongunique commented 2 years ago

:'( But other problems arises: image

Missing artifact org.bytedeco:javacpp:jar:windows-x86_64:1.5.7

Missing artifact org.bytedeco:openblas:jar:windows-x86_64:0.3.19-1.5.7

Missing artifact org.bytedeco:javacpp:jar:1.5.7

Missing artifact org.bytedeco:arpack-ng:jar:windows-x86_64:3.8.0-1.5.7

Missing artifact org.bytedeco:openblas:jar:0.3.19-1.5.7

Could not transfer artifact org.bytedeco:openblas:jar:0.3.19-1.5.7 from/to central (https://repo.maven.apache.org/maven2): repo.maven.apache.org

org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.bytedeco:openblas:jar:0.3.19-1.5.7 from/to central (https://repo.maven.apache.org/maven2): repo.maven.apache.org at io.takari.aether.connector.AetherRepositoryConnector$2.wrap(AetherRepositoryConnector.java:889) at io.takari.aether.connector.AetherRepositoryConnector$2.wrap(AetherRepositoryConnector.java:1) at io.takari.aether.connector.AetherRepositoryConnector$GetTask.flush(AetherRepositoryConnector.java:659) at io.takari.aether.connector.AetherRepositoryConnector.get(AetherRepositoryConnector.java:337) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:513) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:401) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:229) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:340) at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:202) at org.apache.maven.project.DefaultProjectBuilder.resolveDependencies(DefaultProjectBuilder.java:227) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:200) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:124) at org.eclipse.m2e.core.internal.embedder.MavenImpl.readMavenProject(MavenImpl.java:649) at org.eclipse.m2e.core.internal.project.registry.DefaultMavenDependencyResolver.resolveProjectDependencies(DefaultMavenDependencyResolver.java:65) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:544) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.lambda$3(ProjectRegistryManager.java:508) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:182) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:156) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:506) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:358) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:312) at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.getProjectFacade(MavenBuilder.java:151) at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.lambda$0(MavenBuilder.java:89) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:182) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:156) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:103) at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:88) at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:198) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:988) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:253) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:310) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:399) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:402) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:513) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:461) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:543) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:161) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:255) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) Caused by: java.net.UnknownHostException: repo.maven.apache.org at java.base/java.net.InetAddress$CachedAddresses.get(Unknown Source) at java.base/java.net.InetAddress.getAllByName0(Unknown Source) at java.base/java.net.InetAddress.getAllByName(Unknown Source) at java.base/java.net.InetAddress.getAllByName(Unknown Source) at okhttp3.Dns.lambda$static$0(Dns.java:39) at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:171) at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.java:135) at okhttp3.internal.connection.RouteSelector.next(RouteSelector.java:84) at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:187) at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:107) at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.java:87) at okhttp3.internal.connection.Transmitter.newExchange(Transmitter.java:169) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:41) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:221) at okhttp3.RealCall.execute(RealCall.java:81) at io.takari.aether.okhttp.OkHttpAetherClient.execute(OkHttpAetherClient.java:215) at io.takari.aether.okhttp.OkHttpAetherClient.get(OkHttpAetherClient.java:161) at io.takari.aether.connector.AetherRepositoryConnector$GetTask.getResponse(AetherRepositoryConnector.java:655) at io.takari.aether.connector.AetherRepositoryConnector$GetTask.resumableGet(AetherRepositoryConnector.java:600) at io.takari.aether.connector.AetherRepositoryConnector$GetTask.run(AetherRepositoryConnector.java:481) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source)

haifengl commented 2 years ago

I guess that you use 2.6. So try this version.

  "org.bytedeco" % "arpack-ng" % "3.7.0-1.5.4"  classifier "windows-x86_64" classifier "",
  "org.bytedeco" % "openblas"  % "0.3.10-1.5.4"  classifier "windows-x86_64",
  "org.bytedeco" % "javacpp"   % "1.5.4"        classifier "windows-x86_64"

If it still doesn't work, I guess something wrong with your system. I have no issues on windows.

saudet commented 2 years ago

M2Eclipse is known to have many issues. Please try with Maven instead. Others build tools like Gradle and sbt work fine too.