graphstream.Graph类中的问题

时间:2016-09-10 07:54:21

标签: java maven intellij-idea

我正在使用graphstream使用org.graphstream.graph库绘制图形(使用lat-lon)。

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)如何使用命令行执行错误显示已满(由于...更多,我无法调试;它没有说明问题的确切位置。) 2)为什么我只在命令行执行期间得到上述错误?

1 个答案:

答案 0 :(得分:0)

1)首先,找到您的.m2目录。当maven获取pom中指定的依赖项时,它会将它们放在.m2(或类似的主目录,如果您在Windows上)中的/Users/username文件夹中。这就是图形流类所在的位置。有关.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在幕后所做的事情,请查看当您点击“run”时打开的对话框窗格中的第一行文本 - 这是IntelliJ正在使用的命令行。