macos Java代码在应用程序中工作,而不是在Servlet中
情况是这样的
我正在Java Web应用程序上实现面部识别软件,其中包括两个。jar文件和。动态库本机库。在普通的java应用程序中,代码工作正常,但是当我尝试在servlet中加载库时,我得到了。找不到动态库。如何让servlet加载库以便访问面部识别软件
这是我的密码。工作正常的Java应用程序
public static void main(String[] args) {
FSDK.ActivateLibrary("G2TfLOGUH8hQehjxiB...");
FSDK.Initialize();
FSDK.Finalize();
}
这是servlet
@WebServlet(name = "glassesServlet", urlPatterns = {"/glassesServlet"})
public class glassesServlet extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
FSDK.ActivateLibrary("G2TfLOGUH8hQehjxiBZtJvjmwyu...");
FSDK.Initialize();
FSDK.Finalize();
} finally {
out.close();
}
}
现在,这里是每次我尝试从服务器运行时服务器给出的错误
WARNING: StandardWrapperValve[glassesServlet]: PWC1406: Servlet.service() for servlet
java.lang.NoClassDefFoundError: Could not initialize class Luxand.FSDK$IFaceSDK
加上一些其他代码,详细说明了它的起源。该类Luxand.FSDK$IFaceSDK
是。存储在库文件夹中的jar文件
任何帮助都会很好,谢谢
# 1 楼答案
确保库文件夹位于部署环境的类路径上
# 2 楼答案
以上两个答案都是正确的。再详细一点
在你的笔记本电脑上,它可能只是在接收数据。来自项目根目录的动态库文件
在Linux上,您需要。所以归档。它在哪里并不重要,只要它位于LD_LIBRARY_PATH环境变量PATH上。我发现最简单的方法是在启动服务器的命令行上设置它
因此,如果您使用的是一个胖罐子,它将类似于: