【问题标题】:Java Code Works in App, not in ServletJava 代码在 App 中工作,而不是在 Servlet 中工作
【发布时间】:2011-12-14 17:15:48
【问题描述】:

情况是这样的。

我正在 Java Web 应用程序上实现面部识别软件,其中包括两个 .jar 文件和一个 .dylib 本机库。在普通的 java 应用程序中,代码工作正常,但是当我尝试在 servlet 中加载库时,我收到了找不到 .dylib 的错误。如何让 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 文件中的一个类,该文件存储在 Library 文件夹中。

任何帮助都会很棒,谢谢!

【问题讨论】:

  • 如果这是 Linux,我会说您要确保本机库位于 servlet 容器的 LD_LIBRARY_PATH 中
  • 在 Windows 上,可能位于 system32 文件夹中。顺便说一句,当它在应用程序上运行时,是因为它在类路径中吗?如果是,您是否尝试将库放在 WEB-INF/lib 中?

标签: java macos servlets netbeans noclassdeffounderror


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    以上两个答案都是正确的。提供更多细节...

    在您的笔记本电脑上,它可能只是从项目的根目录中获取 .dylib 文件。

    在 Linux 上,您需要 .so 文件。只要它在 LD_LIBRARY_PATH 环境变量路径上,它在哪里都没有关系。我发现最简单的方法是在启动服务器的命令行上进行设置。

    因此,如果您使用的是胖 JAR,它将类似于:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 2018-06-26
      • 1970-01-01
      相关资源
      最近更新 更多