我目前正在使用 Eclipse Indigo 并有两个动态 Web 项目:项目 A 和项目 B。
项目 A 将项目 B 作为构建路径上的必需项目,并且将其勾选Properties -> Java Build Path -> Order and Export
。
然后我在项目 A 中有一个方法,它调用项目 B 中的一个方法,该方法具有以下行:
FileUtils.writeStringToFile(file, data);
此行引发以下异常:
java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils
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)
at my.package.projectB.Class.createAndWriteToFile(FileUtil.java:62)
at my.package.projectA.Class.saveCurrentDialog(UIResponseStrategy.java:99)
...
项目 Bcommons-io-2.4.jar
在WEB-INF\lib
项目 B 中运行并使用 Commons IO jar 中的方法调用方法时,不会引发异常。
无论项目 A 是否commons-io-2.4.jar
在其自己的WEB-INF\lib
文件夹中,都会引发此异常。
我已经检查过,Eclipse 确实在部署项目的 jar。
有没有办法解决这个问题?
编辑:我目前使用的是 Eclipse Indigo,而不是 Juno。
编辑 2:我创建了一个新的 Java 项目,它只有一个 main 和一行:
FileUtil.createAndWriteToFile(new File("./test.txt"), "test-data");
以及项目 B 作为构建路径上的必需项目。不会抛出异常。