有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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文件

任何帮助都会很好,谢谢


共 (2) 个答案

  1. # 1 楼答案

    确保库文件夹位于部署环境的类路径上

  2. # 2 楼答案

    以上两个答案都是正确的。再详细一点

    在你的笔记本电脑上,它可能只是在接收数据。来自项目根目录的动态库文件

    在Linux上,您需要。所以归档。它在哪里并不重要,只要它位于LD_LIBRARY_PATH环境变量PATH上。我发现最简单的方法是在启动服务器的命令行上设置它

    因此,如果您使用的是一个胖罐子,它将类似于:

    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/luxand/luxand-something.so java -jar Server.jar -Dsomeothersetting=something