的Java代码在应用程序,而不是在Servlet的
问题描述:
这里的情况。的Java代码在应用程序,而不是在Servlet的
我在一个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
是存储在Library文件夹中的.jar文件中的一个类。
任何帮助将是伟大的,谢谢!
答
确保库文件夹是在部署环境
答
上述两个答案都是正确的类路径。为了给出一个更详细一点...
在你的笔记本电脑,它可能正从你的项目的根拿起名为.dylib文件。
在Linux上,你需要的.so文件。只要它位于LD_LIBRARY_PATH环境变量路径上,它的位置并不重要。我发现最简单的方法是在启动服务器的命令行上设置它。
因此,如果您使用的是脂肪JAR,它会是这样的:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/luxand/luxand-something.so java -jar Server.jar -Dsomeothersetting=something
如果这是Linux的我说你会希望确保本机库中的LD_LIBRARY_PATH servlet容器 – antlersoft 2011-12-14 17:19:57