Idea打包dll到jar包
参考IntelliJ Idea+javafx+第三方库+dll 打包为jar
代码
import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import org.opencv.videoio.VideoCapture; import org.opencv.videoio.Videoio; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; public class Main { private static String rtsp_62 = "rtsp://admin:密码@192.168.0.62:554/stream0"; private static String rtsp_64 = "rtsp://admin:密码@192.168.0.64:554/stream0"; private static String rtsp_93 = "rtsp://admin:密码@192.168.0.93:554/stream0"; private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); private static String dir = "D:/VideoRec/Image"; private static String nginxServer = "http://192.168.0.56:8999"; static { try { // getClass().getClassLoader().getResourceAsStream(arg0); // System.out.println("MainTest.class.getClass()"+MainTest.class.getClass().toString()); InputStream in = Main.class.getResourceAsStream("opencv_java440.dll"); //dll文件位置 System.out.println("Main.class.getClass()" + in); File ffile = new File(""); String filePath = null; filePath = ffile.getAbsolutePath() + File.separator + "opencv_java440.dll"; System.out.println("filePath opencv_java410.dll is " + filePath); File dll = new File(filePath); FileOutputStream out = new FileOutputStream(dll); //缓存dll位置 int i; byte[] buf = new byte[1024]; try { while ((i = in.read(buf)) != -1) { out.write(buf, 0, i); } } finally { in.close(); out.close(); } System.load(dll.getAbsolutePath());// dll.deleteOnExit(); } catch (Exception e) { System.err.println("load jni error!"); } } public static void main(String[] args) { // System.load(ClassLoader.getSystemResource("opencv_java440.dll").getPath()); System.out.println("load opencv_java440.dll success"); } private static void openVideo64() { VideoCapture capture = null; try { // System.load(ClassLoader.getSystemResource("static/opencv_java440.dll").getPath()); capture = new VideoCapture(); capture.open(rtsp_64); int height = (int) capture.get(Videoio.CAP_PROP_FRAME_HEIGHT); int width = (int) capture.get(Videoio.CAP_PROP_FRAME_WIDTH); if (height == 0 || width == 0) { throw new Exception("camera not found!"); } Mat capImg = new Mat(); Mat temp = new Mat(); while (true) { capture.read(capImg); Imgproc.cvtColor(capImg, temp, Imgproc.COLOR_RGB2GRAY); String path = dir + "/" + sdf.format(new Date()) + ".jpg"; Imgcodecs.imwrite(path, temp); // sendToWeb("2", path); // Thread.sleep(300); } } catch (Exception e) { System.out.println("异常:" + e.toString() + " --- " + Arrays.toString(e.getStackTrace())); } finally { if (capture != null && capture.isOpened()) { System.out.println("-----capture--done--"); capture.release(); } } } } ``
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律