我可以将本机DLL打包到WAR中吗?

 2023-01-20    291  

问题描述

我正在开发通过JNI使用本机代码的Web服务.
我可以将这些DLL打包到我的战争中吗?
我很累独立管理它们…

ps我正在使用maven.
pps我正在使用tomcat 7.x

我可以将本机DLL打包到WAR中吗?

推荐答案

全部来自src/main/webapp的全部都在root中挤满了战争,全部来自src/main/resources> src/main/resources.您可以打包想要的东西

其他推荐答案

是的,但是您将遇到很多问题.

  1. dll是从文件系统加载的,而不是classpath
    这不是一个严重的问题:只需将DLL存储在战争中作为资源,然后将其复制到文件系统上的位置.属性java.io.tmpdir应该指向您的可写目录,或者您可以使用File.createTempFile()(只需在该文件上调用deleteOnExit())即可.然后您致电System.load(),不是 System.loadLibary().

  2. 您必须管理不同体系结构的DLL的不同副本
    如果您对部署有完全控制,并且知道您只会部署到一台计算机,那么这不是问题.否则,您需要编写代码才能确定要加载哪个库.

  3. 您只能在
    这是会伤害您的事情:当您加载共享库时,它将链接到JVM的可执行代码中.您无法重新加载同一库,这意味着您不能重新部署.

当我上次不得不加载共享库来支持Web应用程序时,我最终将其放入了应用程序共享目录中.这样就容易得多.

其他推荐答案

DLL文件未通过类路径加载. ClassPath机制仅用于加载类文件和其他属性文件之类的Java资源.

一种方法是指定DLL的完整路径或使用java.library.path系统变量指定它.请检查此链接有关更多详细信息.

以上所述是小编给大家介绍的我可以将本机DLL打包到WAR中吗?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25988.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。