我在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问题?
更新:
UnsatisfiedLinkError表示Java虚拟机(JVM)无法找到声明为native的方法的适当本机语言定义。具体来说,为了找到所需的本机库,JVM同时查找PATH环境变量和java.library.path系统属性。 (来自this article)
我曾经遇到过这种问题主要是因为两个原因:
为了确保您链接的图书馆使用Dependency Walker。使用此工具可以告诉您链接到哪些本机库,从而使您了解错误。
下载该工具,然后打开C:\ Program Files \ VTK \ bin \ ANY_VTK_DLL.dll以查看它链接到哪个库以及它们在您的计算机中的位置。然后确保IntelliJ可以找到这些路径。
这是一个关于如何使用这个工具的好教程:qazxsw poi
如果它们是正确的,请验证IntelliJ Idea用于启动应用程序的类路径,以检查本机库是否存在。
我可以运行,使用System.setProperty(“vtk.lib.dir”,YourBuildVTKLibPath);
我是新用的VTK,花了我一段时间才解决这个问题,我正在使用eclipse,
我在PATH环境变量中添加了dll文件夹和lib文件夹