在 Java Spring Maven Web 应用程序中调用 C/C++ 函数

Posted

技术标签:

【中文标题】在 Java Spring Maven Web 应用程序中调用 C/C++ 函数【英文标题】:Call a C/C++ function in Java Spring Maven web application 【发布时间】:2014-11-11 06:39:42 【问题描述】:

我是一名 Java 开发人员,我在 Java Spring 和 maven 框架中开发了一个用于实时视频流的 Web 应用程序。我正在尝试将人脸识别代码与现有的 Web 应用程序集成。人脸识别代码是c语言的,我需要在java代码中调用那些c函数。任何人都可以指导我如何将此 c 代码用于 Java Web 应用程序吗?我已经在网上对此进行了探索,但没有发现任何合适的内容。我知道 JNI 可能适用于此,但如何与 Web 应用程序集成?

我希望我的要求很明确;

(Spring+Hibernate+Maven)+(C语言代码)->Web应用程序

提前致谢。

【问题讨论】:

stat.ucla.edu/~dinov/courses_students.dir/04/Winter/… 感谢 Pumpkin,这是一个手动过程,我正在为 Web 应用程序寻找一个自动化过程。 @Pumpkin 的链接是最有可能的方式。或者,您可以独立编译 C 程序并使用 System.exec() 在您的 java 程序中作为子进程运行它。您可以通过使用 Process.getInputStream() 和 Process.getOutputStream() 连接到其标准管道(stdin 和 stdout)来与子级通信。我在我的一个项目中反向执行此操作,以使 java 程序成为 C 程序的 UI。 【参考方案1】:

您可以创建一个从 System object 加载库的类,如下所示:

public class MyLibrary 
    static  System.loadLibrary("mylib"); 
    public static native boolean foo();
    public static native String bar();

然后您就可以访问这些方法,例如MyLibrary.foo()

【讨论】:

感谢您的快速回复。你能告诉我如何在 MyLibrary 类中加载 mylib 吗?如果您对此有任何简单的教程,请分享。 显示的代码就是这样做的。将 mylib 替换为您的库的全名。 System.loadLibrary() 将库加载到类中。

以上是关于在 Java Spring Maven Web 应用程序中调用 C/C++ 函数的主要内容,如果未能解决你的问题,请参考以下文章

Java EE 学习:IDEA + maven + spring 搭建 web- 配置数据库

idea中用maven打包spring的java项目(非web)

Java--Spring应用在Web项目

在 Java Spring Maven Web 应用程序中调用 C/C++ 函数

Java EE 学习:IDEA + maven + spring 搭建 web

用idea创建一个maven web项目