Java 编译器似乎混淆了重载方法的两个版本。为什么?

Java 编译器似乎混淆了重载方法的两个版本。为什么?,java,compiler-construction,overloading,Java,Compiler Construction,Overloading,在我的jsp文件中有一行: byte[] imageData = Base64.decodeBase64(request.getParameter("imageBase64")); eclipse抱怨: Base64类型中的decodeBase64(字节[])方法不适用于参数(字符串)” 它表示该方法获取一个字符串,但它需要一个字节[]。 但是在Base64类中有两个重载版本的decodeBase64;一个带有参数String, 还有一个参数是字节[] 我不明白为什么编译器似乎认为我用一个不正

在我的jsp文件中有一行:

byte[] imageData = Base64.decodeBase64(request.getParameter("imageBase64"));
eclipse抱怨:

Base64类型中的decodeBase64(字节[])方法不适用于参数(字符串)”

它表示该方法获取一个
字符串
,但它需要一个
字节[]
。 但是在
Base64
类中有两个重载版本的
decodeBase64
;一个带有参数
String
, 还有一个参数是
字节[]


我不明白为什么编译器似乎认为我用一个不正确的
String
参数调用
byte[]
版本,它应该在没有任何编译器错误的情况下使用
String
版本。

org.apache.commons.codec中的
Base64
类。binary
有两种解码方法

static byte[]   decodeBase64(byte[] base64Data) since beginning

static byte[]   decodeBase64(String base64String) since version 1.4.
我想您的类路径中一定有jar在
commons codec 1.4
之前


希望有帮助。

您是否尝试过像(字符串)request.getParameter(“imageBase64”)那样显式地键入它?我想这是一个版本问题。你使用的是哪个版本的库?你使用的是什么库?你可能使用的是旧版本的库;一个不支持
字符串
版本的库。还要确保
Base64
来自正确的包。你找到了:我使用的是commons-codec-1.3.jar。感谢你清除了这个错误融合。(更糟糕的是:我发现commons-codec-1.3.jar和commons-codec-1.4.jar都被我的一个同事放进了图书馆)