我想使用 commons-codec 1.5 中的 Base64 类,当我在服务器上运行代码时效果很好。我的应用程序在 Websphere 7.0 上运行。
但是当我运行我的 JUnit 测试时,选择了错误的 Base64 类,当我询问该类时:
System.out.println(Base64.class.getProtectionDomain().getCodeSource().getLocation());
输出为:file:/C:/EProg/IBM/SDP80/runtimes/base_v7/plugins/com.ibm.ws.prereq.soap.jar
那绝对是错误的版本。
并且由于版本错误而发生错误:
java.lang.NoSuchMethodError: org/apache/commons/codec/binary/Base64.decodeBase64(Ljava/lang/String;)
疯狂的是,只有当我选择一个测试并在 Eclipse 中使用 Run As: JUnit Test 运行它时才会发生这种情况,如果我使用 Maven 运行整个测试,一切都可以正常工作。
我使用 JUnit 4.8.1 和 Eclipse Indigo Service Release 2 以及一些用于 Websphere、GWT 和 Maven 的插件。``