我如何开始使用JFreeChart?

时间:2013-05-18 13:16:07

标签: java jfreechart

我之前从未使用过任何第三方库。下载jfreechart-1.0.14.tar.gz后我该怎么办?

我不知道我是否正确地做这些事情:
1.将jcommon-1.0.17.jarjfreechart-1.0.14.jar放在与我的源代码相同的目录中 2.在源代码中导入所需的类(例如import org.jfree.util.Rotation;

许多文章都告诉您如何在IDE中执行此操作。但是我没有使用IDE,而是用vim编写代码并自己编译。所以,假设我没有做任何错误,我应该如何使用javac编译源代码并使用java运行代码?


编辑:

这是我的文件布局:
./src
 | - test.java
./lib
 | - jcommon-1.0.17.jar
 | - jfreechart-1.0.14.jar

我编译 javac -cp "lib/*" -d classes/ src/test.java
然后由 java -cp classes:lib/jcommon-1.0.17.jar:jfreechart-1.0.14.jar test

但是,会发生一些错误:
线程“main”中的异常java.lang.NoClassDefFoundError:org / jfree / data / general / PieDataset

如何解决此问题?


Exception in thread "main" java.lang.NoClassDefFoundError: org/jfree/data/general/PieDataset  
at java.lang.Class.getDeclaredMethods0(Native Method)  
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)  
at java.lang.Class.getMethod0(Unknown Source)  
at java.lang.Class.getMethod(Unknown Source)  
at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)  
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)  
Caused by: java.lang.ClassNotFoundException: org.jfree.data.general.PieDataset  
at java.net.URLClassLoader$1.run(Unknown Source)  
at java.net.URLClassLoader$1.run(Unknown Source)  
at java.security.AccessController.doPrivileged(Native Method)  
at java.net.URLClassLoader.findClass(Unknown Source)  
at java.lang.ClassLoader.loadClass(Unknown Source)  
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)  
at java.lang.ClassLoader.loadClass(Unknown Source)  
... 6 more

1 个答案:

答案 0 :(得分:1)

库不应与源代码位于同一位置。如果您不想使用像Gradle那样的构建工具,它会处理您的库依赖项,那么我建议使用以下布局:

project
    src
        .java files here, organized in a folder tree matching the package tree
    classes
        compiled .class files here
    lib
        .jar files here

要编译,请进入项目目录并执行以下命令:

javac -cp lib/jfreechart-1.0.14.jar:lib/jcommon-1.0.17.jar -d classes src/com/foo/bar/MyClass.java src/com/foo/bar/MyOtherClass.java

要运行您的应用,请执行以下命令:

java -cp classes:lib/jfreechart-1.0.14.jar:lib/jcommon-1.0.17.jar com.foo.bar.MyClass