2016-09-10 8 views
2

私は、org.graphstream.graphライブラリを使用してgraphstream(lat-lon)をプロットするためにgraphstreamを使用しています。graphstream.Graphクラスでの問題

import org.graphstream.graph.*; 

以下は、グラフを表示するコードです。

public static void displayGraph(){ 
    System.setProperty("gs.ui.renderer","org.graphstream.ui.j2dviewer.J2DGraphRenderer"); 
    Graph graph = new MultiGraph("Test"); 
    try{ 
     graph.read("data/fullGraph2sc.dgs"); 
    } 
    catch (Exception e){ 
    e.printStackTrace(); 
    } 

    graph.addAttribute("ui.stylesheet",styleSheet); 
    graph.addAttribute("ui.quality"); 
    graph.addAttribute("ui.antialias"); 
    graph.display(false); 
} 

必要なuiファイルを含める。私はpom.xmlにもあります:

<!-- https://mvnrepository.com/artifact/org.graphstream/gs-core --> 
    <dependency> 
     <groupId>org.graphstream</groupId> 
     <artifactId>gs-core</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.graphstream/gs-algo --> 
    <dependency> 
     <groupId>org.graphstream</groupId> 
     <artifactId>gs-algo</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.graphstream/gs-ui --> 
    <dependency> 
     <groupId>org.graphstream</groupId> 
     <artifactId>gs-ui</artifactId> 
     <version>1.3</version> 
    </dependency> 

問題このコードをIntellijで実行すると、問題はありません。しかし、私は、コマンドラインを使用して実行しようとしながら、それが以下のエラーを与える:

Exception in thread "main" java.lang.NoClassDefFoundError: org/graphstream/graph/Graph 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Class.java:2531) 
at java.lang.Class.getMethod0(Class.java:2774) 
at java.lang.Class.getMethod(Class.java:1663) 
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) 
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486) 
Caused by: java.lang.ClassNotFoundException: org.graphstream.graph.Graph 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
... 6 more 

は、今私は聞いて二つの質問があります: 1)どのように私はフル示すエラーのコマンドラインを使用して実行することができます(私はにできないAMAデバッグのために... 6 more;問題がどこにあるかを正確な行には示しません。) 2)コマンドライン実行中に上記のエラーが発生するのはなぜですか?

答えて

0

1)最初にまず.m2ディレクトリを探します。 mavenがpomで指定された依存関係を取得すると、/Users/username(またはWindowsの場合は同様のホームディレクトリ)にある.m2というフォルダに入れます。それが、グラフストリームクラスが生きる場所です。 .m2フォルダの詳細については、this Mykong postを参照してください。 NoClassDefFoundErrorを解決するために、あなたのクラスパスに次のjarファイルが含ま:)

/{.M2_LOCATION}/.m2/repository/org/graphstream/gs-core/1.3/gs-core-1.3.jar 
/{.M2_LOCATION}/.m2/repository/org/graphstream/pherd/1.0/pherd-1.0.jar 
/{.M2_LOCATION}/.m2/repository/org/graphstream/mbox2/1.0/mbox2-1.0.jar 

2を、それはのIntelliJで正常に動作理由は、IntelliJのは、自動的にクラスパスに)通常、これらのjarファイル(および他の多くが含まれていることです。 IntelliJが舞台裏で何をしているのかを見るには、「実行」を押すと開くダイアログペインのテキストの最初の行を見てください。これはIntelliJが使用しているコマンドラインです。