Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在哪里放置DLL文件?_Java_Deployment_Dll - Fatal编程技术网

Java 在哪里放置DLL文件?

Java 在哪里放置DLL文件?,java,deployment,dll,Java,Deployment,Dll,我在java项目中调用dll文件C++方法。现在,我已经硬编码了路径 该应用程序将部署在多台机器上,并在多台机器上运行。我应该将DLL文件放在哪里,以便在任何计算机上加载和调用它?C:\WINDOWS\system32(假设C是安装WINDOWS的驱动器,您可能可以从注册表获取它) 我很久以前就用过windows&不是专家,所以我在谷歌上搜索了一下你的链接 请参阅链接中的最后一个主题(以headline开头的主题使用Regsvr32.exe注册DLL)我见过将DLL放入JAR文件的应用程序。在运

我在java项目中调用dll文件C++方法。现在,我已经硬编码了路径

该应用程序将部署在多台机器上,并在多台机器上运行。我应该将DLL文件放在哪里,以便在任何计算机上加载和调用它?

C:\WINDOWS\system32(假设C是安装WINDOWS的驱动器,您可能可以从注册表获取它)

我很久以前就用过windows&不是专家,所以我在谷歌上搜索了一下你的链接


请参阅链接中的最后一个主题(以headline开头的主题使用Regsvr32.exe注册DLL

我见过将DLL放入JAR文件的应用程序。在运行时,他们将DLL从JAR提取到一个临时目录中,然后在那里访问它


从部署的角度来看,这不是最有效的方法,而是最简单的方法。

您必须确保DLL位于类路径中

这样做的一种方法是将DLL的路径放入path环境变量中

另一个选项是将其添加到变量LD_LIBRARY_PATH中的VM参数中,如下所示:

java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass

如果您正在开发一个复杂的应用程序,它必须是稳定的,您必须确保您需要的DLL放在操作系统将要查找它的地方,可能会想到一个安装程序脚本/程序。

regsrv32将只注册COM/ActiveX.DLL,并且只有在它们具有DllRegisterServer()条目时才会注册。这里可能不是这样。顺便说一句,在Mac或*nix机器上没有可以放置DLL并加载它的地方。你有那些平台的本地人吗?“这不是最有效的方法,但最简单的”部署本地人使用起来更容易。