因此,在作为Java web应用程序运行时不会加载库

因此,在作为Java web应用程序运行时不会加载库,java,tomcat,shared-libraries,Java,Tomcat,Shared Libraries,我在这里面找了很多。但却找不到合适的解决办法。问题就在这里 我有一些.so文件要加载到我的java应用程序中 我用main方法创建了一个Java类,并使用System.load()加载它 System.load("/home/myfolder/TFS-SDK-11.0.0/redist/native/linux/x86_64/libnative_auth.so"); System.load("/home/myfolder/TFS-SDK-11.0.0/redist/native/

我在这里面找了很多。但却找不到合适的解决办法。问题就在这里

我有一些.so文件要加载到我的java应用程序中

我用main方法创建了一个Java类,并使用System.load()加载它

System.load("/home/myfolder/TFS-SDK-11.0.0/redist/native/linux/x86_64/libnative_auth.so");        
System.load("/home/myfolder/TFS-SDK-11.0.0/redist/native/linux/x86_64/libnative_console.so");     
然后是我的Java代码。当我以Java应用程序的形式运行这个类时,它运行得很好

然后,我在Java web应用程序中添加了相同的代码。我在tomcat中运行它。但它显示出一些错误

Exception in thread "main" java.lang.UnsatisfiedLinkError
我发现这是因为它没有加载库文件

当我在谷歌搜索时,我找到了一些解决方案,但它对我没有帮助。我尝试在中添加so文件位置

setenv.shcatalina.shJAVA\u选项中。但都不管用

一些我甚至不理解的解决方案

有人能给出一步一步的过程吗

在tomcat中将so文件放在哪里? 我应该编辑哪个文件,应该添加什么?


我找了很多。但大多数答案我都不明白

在Tomcat等web容器中运行应用程序时,将不会调用main方法

如果您想在容器启动时加载这些库,那么我建议使用ContextListener

尝试谷歌搜索“java上下文侦听器示例”-您将获得大量的点击率和大量的示例


您可能还需要将这些库添加到Unix库路径中。在tomcat启动脚本中这样做通常很方便。library path变量的名称取决于unix风格,因此我恐怕无法告诉您该路径是什么。

可能重复@chrylis,我不想制作一个Jar和所有内容。我想把这些SO文件放在tomcat中(如果需要的话)并加载这些文件。或者在tomcat的一些配置文件中,我应该能够提到SO文件的位置(我不知道是哪个配置文件)?我正在使用Ubuntuyes-startup.sh(或者可能是catalina.sh)。这是tomcat的启动脚本,而不是整个unix安装的启动脚本