【发布时间】: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