Search code examples
javagraphjgrapht

JGraphT - UndirectedGraph - addEdge method does not work


I have a problem about UndirectedGraph usage. My code :

UndirectedGraph<String, DefaultEdge> graph =
            new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);

 String v1 = "v1";
 String v2 = "v2";
 String v3 = "v3";
 String v4 = "v4";

 graph.addVertex(v1);
 graph.addVertex(v2);
 graph.addVertex(v3);
 graph.addVertex(v4);

 graph.addEdge(v1, v2);
 graph.addEdge(v2, v3);
 graph.addEdge(v3, v4);
 graph.addEdge(v4, v1);

Each vertex was added to graph successfully. Hovewer, addEdge method didn't work properly. When I debug this code, first addEdge line threw class not found exception.

I hope, you will help me. Thanks.


Solution

  • With jgrapht-0.8.3, the following works as expected:

    import org.jgrapht.UndirectedGraph;
    import org.jgrapht.graph.DefaultEdge;
    import org.jgrapht.graph.SimpleGraph;
    
    public class GraphTest {
    
      public static void main(String[] args) {
        UndirectedGraph<String, DefaultEdge> graph =
          new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);
    
        String v1 = "v1";
        String v2 = "v2";
        String v3 = "v3";
        String v4 = "v4";
    
        graph.addVertex(v1);
        graph.addVertex(v2);
        graph.addVertex(v3);
        graph.addVertex(v4);
    
        graph.addEdge(v1, v2);
        graph.addEdge(v2, v3);
        graph.addEdge(v3, v4);
        graph.addEdge(v4, v1);
        
        if( graph.getEdge(v1, v2) != null) { System.out.println("SUCCESS"); }
        if (graph.getEdge(v2,v4) == null)  { System.out.println("SUCCESS"); }
      }
    }
    

    I get

    SUCCESS

    SUCCESS

    Can you clarify what problem you're having?