使用Java中的GraphVIZ本机库

使用Java中的GraphVIZ本机库,java,graphviz,java-native-interface,Java,Graphviz,Java Native Interface,我正在尝试使用java中的graphviz本机库。我能够在Eclipse中编译该程序。但有一个例外: Exception in thread "main" java.lang.UnsatisfiedLinkError: no gv in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) at java.lang.Runtime.loadLibrary0(Runtime.jav

我正在尝试使用java中的graphviz本机库。我能够在Eclipse中编译该程序。但有一个例外:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no gv in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
    at java.lang.Runtime.loadLibrary0(Runtime.java:840)
    at java.lang.System.loadLibrary(System.java:1047)
    at org.graphviz.test.Test.<clinit>(Test.java:12)
Could not find the main class: org.graphviz.test.Test. Program will exit.

我已经正确地指向了库,但是在运行时出现了令人不满意的链接错误。有人尝试过使用graphviz本机库吗?请让我知道如何配置JNI。

我相信您的问题在于您试图从gv导入,但没有指定要导入的内容。这有点像如果你只是写---

相反,请尝试从gv库导入特定库。例如,如果您想要一个有向图,您可能会这样做---

看看下面的文档,看看它是否有帮助。它可能会让您更好地了解gv来自何处,以及如何导入与之相关的方法

Get graphviz java 确保已安装graphviz java。对于MacPorts,其工作原理如下:

sudo port install graphviz +java
这实际上在我第一次尝试时就失败了,并抱怨swig java,这解决了它:

sudo port install swig-java
sudo port install graphviz +java
现在库安装在
/opt/local/lib/graphviz/java
下。对于我来说,如果在那里找不到,请搜索
libgv.jnilib

设置类路径 我在Eclipse中编译,为此我将
/opt/local/lib/graphviz/java
作为外部类文件夹添加到构建路径中

编写 这是一个编写图像的简单示例。请注意,
System.loadLibrary(“gv”)
必须在调用graphviz中的任何内容之前发生

import org.graphviz.SWIGTYPE_p_Agedge_t;
import org.graphviz.SWIGTYPE_p_Agnode_t;
import org.graphviz.SWIGTYPE_p_Agraph_t;
import org.graphviz.gv;

public class Main {

    static {
        System.loadLibrary("gv");
    }

    public static void main(String[] args) {
        SWIGTYPE_p_Agraph_t g = gv.digraph("G");
        SWIGTYPE_p_Agnode_t n = gv.node(g, "hello");
        SWIGTYPE_p_Agnode_t m = gv.node(g, "world");
        SWIGTYPE_p_Agedge_t e = gv.edge(n, m);
        gv.layout(g, "dot");
        gv.render(g, "png", "hello.png");
    }

}

在Eclipse运行配置中,使用
java.library.path=/opt/local/lib/graphviz/java
,例如
-Djava.library.path=/opt/local/lib/graphviz/java
作为VM参数运行。

有人拥有graphviz java debian包吗?请分享。
sudo port install graphviz +java
sudo port install swig-java
sudo port install graphviz +java
import org.graphviz.SWIGTYPE_p_Agedge_t;
import org.graphviz.SWIGTYPE_p_Agnode_t;
import org.graphviz.SWIGTYPE_p_Agraph_t;
import org.graphviz.gv;

public class Main {

    static {
        System.loadLibrary("gv");
    }

    public static void main(String[] args) {
        SWIGTYPE_p_Agraph_t g = gv.digraph("G");
        SWIGTYPE_p_Agnode_t n = gv.node(g, "hello");
        SWIGTYPE_p_Agnode_t m = gv.node(g, "world");
        SWIGTYPE_p_Agedge_t e = gv.edge(n, m);
        gv.layout(g, "dot");
        gv.render(g, "png", "hello.png");
    }

}