有没有一种方法可以在maven中为javacv的原生部分设置依赖,而无需手动安装和设置java.library.path?

Is there a way to set up dependency for javacv's native part in maven, without manual installation and setting up java.library.path?

我对 org.bytedeco:opencv:4.1.2-1.5.2 有依赖,而

又将其添加到项目中
        <groupId>org.datavec</groupId>
        <artifactId>datavec-data-image</artifactId>
        <version>${datavec.version}</version>

并且为了 datavec-data-image 的需要,open-cv 加载良好并且执行了所有内部 open-cv 操作。

然后,我想明确地执行一些公开的简历。我使用 https://github.com/rostrovsky/pdf-table 中的 class 来做这些事情:

public class PdfTableReader {

    private TableExtractor extractor;
    private PdfTableSettings settings;

    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

失败并显示

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java412 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at pdftable.PdfTableReader.<clinit>(PdfTableReader.java:32)
    at pdftable.ExtractSyzlekFromPdf.main(ExtractSyzlekFromPdf.java:12)

我应该怎么做才能使这个显式 javacv 部分与 datavec 图像代码一起工作,而无需在我的电脑上的某个位置进行双重显式 open-cv 安装和设置java.library.path 明确?至少 datavec 图像代码在没有这种显式设置的情况下以某种方式获得了它。

我也尝试跟进这个答案:但没有成功(如果我理解正确,他们使用以跨平台方式运送本机库的依赖项,即运送所有平台二进制文件和需要的一个在正确的平台上使用)。我想如果打包到 maven 依赖项的 open-cv 本机二进制文件附加到项目,应该有一种方法可以使 java.library.path 动态更新。但是怎么办?

如果 DL4J 的人能解释如何正确使用 javacv 部分,那就完美了。

org.opencv 包中的 OpenCV Java API 没有自带加载器,所以库需要通过其他外部工具加载。对于 OpenCV 的 JavaCPP 预设,库和包装器都捆绑在 JAR 文件中,我们可以调用 Loader.load(opencv_java.class) 加载此处记录的所有内容:
https://github.com/bytedeco/javacpp-presets/tree/master/opencv#documentation

JavaCV、Deeplearning4j 和 DataVec 不使用 OpenCV 的 Java API,它们使用 org.bytedeco.opencv 包中的 API ,它会自动加载所有内容,所以他们不需要调用任何东西。