1

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

我不知道我做这些事情是否正确:
1. 将jcommon-1.0.17.jarandjfreechart-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
4

1 回答 1

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
于 2013-05-18T13:31:05.090 回答