有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用eclipse查找opencv本机库不起作用

我试图在ubuntu安装中使用opencv,并遵循this教程。一切似乎都很好,它甚至在安装的部件中列出,所以我开始了this教程。直到你不得不将opencv添加为用户库的那一刻,这一切都进行得很顺利,因为它不在找到的库列表中(完全为空)。我查看了整个opencv文件夹,也找不到任何类似于库的东西。我是否遗漏了什么?你知道怎么解决这个问题吗

请注意,它确实成功地产生了。jar文件,但是库仍然丢失。如果有必要,opencv安装在usr/local/src中

如果为了解决这个问题,您需要任何额外的信息,请随时在评论中询问

这可能与问题有关:

ulap:/usr/local/src/opencv-2.4.8/opencv/build/bin$ ant -DocvJarDir=path/to/dir/containing/opencv-248.jar -DocvLibDir=/usr/local/src/opencv-2.4.8/opencv/build/bin /opencv_java248/native/library
Buildfile: /usr/local/src/opencv-2.4.8/opencv/build/bin/build.xml

BUILD FAILED
Target "/opencv_java248/native/library" does not exist in the project "SimpleSample". 

Total time: 0 seconds
thijs@thijs-ulap:/usr/local/src/opencv-2.4.8/opencv/build/bin$ ant -DocvJarDir=path/to/dir/containing/opencv-248.jar -DocvLibDir=/usr/local/src/opencv-2.4.8/opencv/build/bin /opencv_java248/native/library
Buildfile: /usr/local/src/opencv-2.4.8/opencv/build/bin/build.xml

BUILD FAILED
Target "/opencv_java248/native/library" does not exist in the project "SimpleSample". 

Total time: 0 seconds

这是我的身材。xml:

<property name="src.dir"     value="src"/>

<property name="lib.dir"     value="${ocvJarDir}"/>
<path id="classpath">
    <fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>

<property name="build.dir"   value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir"     value="${build.dir}/jar"/>

<property name="main-class"  value="${ant.project.name}"/>


<target name="clean">
    <delete dir="${build.dir}"/>
</target>

<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac includeantruntime="false" srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
</target>

<target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
    </jar>
</target>

<target name="run" depends="jar">
    <java fork="true" classname="${main-class}">
        <sysproperty key="java.library.path" path="${ocvLibDir}"/>
        <classpath>
            <path refid="classpath"/>
            <path location="${jar.dir}/${ant.project.name}.jar"/>
        </classpath>
    </java>
</target>

<target name="rebuild" depends="clean,jar"/>

<target name="rebuild-run" depends="clean,run"/>

奔跑

ulap:/usr/local/src/opencv-2.4.8/opencv/samples/java/ant$ ant -DocvJarDir=/usr/local/src/opencv-2.4.8/opencv/build/bin rebuild-run

给了我:

clean:

compile:
    [mkdir] Created dir: /usr/local/src/opencv-2.4.8/opencv/samples/java/ant/build/classes
    [javac] Compiling 1 source file to /usr/local/src/opencv-2.4.8/opencv/samples/java/ant/build/classes

jar:
    [mkdir] Created dir: /usr/local/src/opencv-2.4.8/opencv/samples/java/ant/build/jar
      [jar] Building jar: /usr/local/src/opencv-2.4.8/opencv/samples/java/ant/build/jar/SimpleSample.jar

run:
     [java] Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java248 in java.library.path
     [java]     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
     [java]     at java.lang.Runtime.loadLibrary0(Runtime.java:844)
     [java]     at java.lang.System.loadLibrary(System.java:1051)
     [java]     at SimpleSample.<clinit>(Unknown Source)
     [java] Could not find the main class: SimpleSample. Program will exit.
     [java] Java Result: 1

rebuild-run:

BUILD SUCCESSFUL
Total time: 1 second

共 (3) 个答案

  1. # 1 楼答案

    我认为你对ant执行了错误的命令。你可以在这里阅读手册:https://ant.apache.org/manual/running.html

    以下是运行ant的格式:

    ant [options] [target [target2 [target3] ...]]
    

    因此,也许您的命令行应该如下所示:

    ant -DocvJarDir=/usr/local/src/opencv-2.4.8/opencv/build/bin rebuild-run
    

    鉴于/usr/local/src/opencv-2.4.8/opencv/build/bin包含opencv-248。罐子

    如你的身材所示。属性ocvJarDir指向类路径位置的xml文件,用于构建项目:

    <property name="lib.dir" value="${ocvJarDir}"/>
    <path id="classpath">
        <fileset dir="${lib.dir}" includes="**/*.jar"/>
    </path>
    

    并且需要在生成后的命令行中指定目标“重建运行”。xml没有指定默认目标

  2. # 2 楼答案

    根据第一个教程(如何从源代码构建OpenCV),结果应该是一个JAR文件和OpenCV目录的.so目录中的bin/本机库。在“在UBUNTU中使用OPENCV(JAVA)设置ECLIPSE”教程中,您必须按照教程中的步骤创建用户库。这个过程包括浏览文件系统,选择第一个教程生成的OpenCV JAR,然后选择.so文件作为本机库。Eclipse不会自动“找到”您的OpenCV库,您必须对其进行配置以了解它,这就是第二个教程所做的

  3. # 3 楼答案

    尝试安装2.4.6版本。与旧版本相比,我在安装时也遇到了类似的问题。也许在月食中也是如此