IntelliJ中的VTK / Java Wrapper因链接器错误而无法工作(无法找到依赖库)

问题描述 投票:1回答:4

我在Windows 10(64位)上运行Java 1.8.0_065(64位)。我已经下载了最新的cmake版本(3.4.0-rc2)用于Windows和最新的VTK源(6.3.0)。我通过cmake生成了一个VS2015解决方案,并使用本教程成功设置了所有内容(看似!!):

https://www.particleincell.com/2011/vtk-java-visualization/

当我尝试运行教程提供的DemoJavaVTK.java时,我在IntelliJ中遇到了链接器错误。 (14.1.5)在必须加载的每个VTK库中都存在相同的错误:

java.lang.UnsatisfiedLinkError:C:\ Program Files \ VTK \ bin \ ANY_VTK_DLL.dll:在java.lang.ClassLoader.loadLibrary0(ClassLoader)的java.lang.ClassLoader $ NativeLibrary.load(Native Method)中找不到依赖库.java:1938)java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)at java.lang.Runtime.loadLibrary0(Runtime.java:870)at java.lang.System.loadLibrary(System.java:1122) at vtk.vtkNativeLibrary.LoadLibrary(vtkNativeLibrary.java:223)at vtk.vtkNativeLibrary.LoadAllNativeLibraries(vtkNativeLibrary.java:158)at sample.DemoJavaVTK。(DemoJavaVTK.java:54)at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)

请注意,ANY_VTK_DLL只是一个占位符。具体示例如下:vtkViewsContext2DJava.dll或vtkRenderingVolumeOpenGLJava.dll。

路径应该是正确的。所有“版本”都是64位。我编译VTK为64位。我正在使用64位java运行64位操作系统。

最奇怪的是:使用eclipse一切正常,我可以毫无问题地运行VTK-demo。我也在使用VTK参加我的大学课程,我正在和一位拥有相同java和intellij版本的同事一起开展我的项目。他还使用相同的教程来设置VTK / Java。这个例子也适用于IntelliJ。我和他的系统之间唯一的区别是,他使用的是Windows 8.1,我使用的是Windows 10。

我真的不知道从哪里继续。什么是IntelliJs问题?

java intellij-idea linker wrapper vtk
4个回答
1
投票

通过Run-configurations手动设置JRE来解决纯粹的随机性:

http://puu.sh/l3315/7c1d5e3393.png

为什么这样做?


1
投票

更新:

UnsatisfiedLinkError表示Java虚拟机(JVM)无法找到声明为native的方法的适当本机语言定义。具体来说,为了找到所需的本机库,JVM同时查找PATH环境变量和java.library.path系统属性。 (来自this article

我曾经遇到过这种问题主要是因为两个原因:

  1. 无法找到本地图书馆(即不存在)
  2. 链接的库不一样(Debug vs Release,32 bit vs 64 bit,VC10 vs VC9等)
  3. 该库已由您的应用程序加载,应用程序尝试再次加载它
  4. 本机库存在于应用程序的java.library.path或PATH环境库中

为了确保您链接的图书馆使用Dependency Walker。使用此工具可以告诉您链接到哪些本机库,从而使您了解错误。

下载该工具,然后打开C:\ Program Files \ VTK \ bin \ ANY_VTK_DLL.dll以查看它链接到哪个库以及它们在您的计算机中的位置。然后确保IntelliJ可以找到这些路径。

这是一个关于如何使用这个工具的好教程:qazxsw poi

如果它们是正确的,请验证IntelliJ Idea用于启动应用程序的类路径,以检查本机库是否存在。


0
投票

我可以运行,使用System.setProperty(“vtk.lib.dir”,YourBuildVTKLibPath);


-1
投票

我是新用的VTK,花了我一段时间才解决这个问题,我正在使用eclipse,

我在PATH环境变量中添加了dll文件夹和lib文件夹

© www.soinside.com 2019 - 2024. All rights reserved.