我有以下代码
public static void main(String args[]) throws Exception {
ClassLoader sysClassLoader = Thread.currentThread().getContextClassLoader();
URL[] urls = ((URLClassLoader)sysClassLoader).getURLs();
String cp = "";
for(int i=0; i< urls.length; i++)
{
String ffile = (String) urls[i].getFile();
}
}
课程编写得非常好 - 但这是一个很大的问题。如果我以这种方式启动类,我会捕获一个空指针:
java -cp "foo.jar" FileUtils
Exception in thread "main" java.lang.NoClassDefFoundError: FileUtils
但是当我以这种方式开始时,一切都很好:
java -cp "foo.jar:" FileUtils
File:/home/u/wzhkit/java/foo.jar
为什么会这样,我该如何解决这个问题?
谢谢, 克里斯
答案 0 :(得分:2)
这有点出乎意料。
我怀疑发生的事情是java
未在您的JAR文件中找到FileUtils
类。相反,我怀疑它是在当前目录中找到它,因为java
命令将空类路径条目解释为当前目录。
这是意料之外的,因为根据online documentation,您应该使用“。”引用当前目录。
(注意:这只是一个理论......)