我編譯成功了我的程序,但在運行它時遇到了未定義的類錯誤。奇怪的是我沒有在myprogram中使用cern/colt/matrix/DoubleMatrix1D類(我用「grep」驗證了這一點)。有人可以請指點我正確的方向嗎?由於爲什麼java會抱怨一個沒有使用的類?
$ javac -cp $(find ../resources/ -name "*.jar"|tr "\n" ":") myprogram.java
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
$ java myprogram
Exception in thread "main" java.lang.NoClassDefFoundError: cern/colt/matrix/DoubleMatrix1D
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)
at java.lang.Class.getMethod0(Class.java:2856)
at java.lang.Class.getMethod(Class.java:1668)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: cern.colt.matrix.DoubleMatrix1D
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
注:
- DoubleMatrix1D是一個抽象類。
- 我在myprogram中使用了DoubleMatrix1D的子類'SparseDoubleMatrix1D'。
很明顯你會在你的程序中使用它。請注意,當您編譯程序時(編譯器知道它們),您會在類路徑中添加一堆jar文件,但在運行程序時不會。 – immibis 2015-02-07 23:26:29