从 Java 1.6.2 升级到 Java 1.7.25,现在在我的 JSP 上编译后,我得到以下内容:
SEVERE: Servlet.service() for servlet [jsp] in context with path [/dswsbobje] threw exception [Unable to compile class for JSP:
An error occurred at line: 40 in the jsp file: encrypt.jsp The method decodeBase64(byte[]) in the type Base64 is not applicable for the arguments (String)
40:byte[] raw = Base64.decodeBase64(secret64);
An error occurred at line: 47 in the jsp file: encrypt.jsp The method encodeBase64URLSafeString(byte[]) is undefined for the type Base64
47:out.write ("User Name " + userid + ": " + Base64.encodeBase64URLSafeString(cipher.doFinal(userid.getBytes())));
是什么导致了这些错误以及如何解决它们?
请您参考如下方法:
您正在使用的类 Base64
似乎已从一个版本更改为另一个版本。您尚未提供此类的完整类名,但 Google 告诉我它应该是版本 >= 1.4 的 Apache Commons Codec。
看来您现在正在使用该库的旧版本,因为编译器提示的方法是在 1.4 版本中添加的,因此如果您现在使用旧版本,则无法找到这些方法。
用更新的库替换旧的库应该可以解决您的问题。或者,您可以将方法的调用更改为旧版本中已存在的方法,例如
byte[] raw = Base64.decodeBase64(secret64);
至
byte[] raw = Base64.decodeBase64(secret64.getBytes(charset));
和
Base64.encodeBase64URLSafeString(cipher.doFinal(userid.getBytes())));
至
new String(Base64.encodeBase64URLSafeString(cipher.doFinal(userid.getBytes(charset)))), "UTF-8");