【问题标题】:The method decodeBase64(byte[]) in the type Base64 is not applicable for the arguments (String)Base64 类型中的方法 decodeBase64(byte[]) 不适用于参数 (String)
【发布时间】:2018-02-27 16:40:20
【问题描述】:

从 Java 1.6.2 升级到 Java 1.7.25,现在在我的 JSP 上编译后得到以下信息:

严重:servlet [jsp] 的 Servlet.service() 与路径关联 [/dswsbobje] 抛出异常 [无法为 JSP 编译类:

jsp文件中的第40行发生错误:encrypt.jsp Base64 类型中的方法 decodeBase64(byte[]) 不适用于 参数(字符串)

40:byte[] raw = Base64.decodeBase64(secret64);

jsp文件中的第47行发生错误:encrypt.jsp 方法 encodeBase64URLSafeString(byte[]) 未定义类型 Base64

47:out.write("用户名" + userid + ":" + Base64.encodeBase64URLSafeString(cipher.doFinal(userid.getBytes())));

是什么导致了这些错误,我该如何解决?

【问题讨论】:

  • 那是哪个Base64 类?
  • 如果你刚刚升级到Java 7,为什么u79 是最新的,你却升级到了很旧的u25 版本?以及为什么你认为升级 Java 会对Base64 类产生任何影响,不管它是什么,什么不是来自 Java 运行时库?

标签: java jsp


【解决方案1】:

您使用的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");

【讨论】:

  • 使用这些导入: common.codec 上的 1.4 版,该版本的原因是因为它位于 Tomcat 停止的 Business Objects 4.1 安装中(7.0.55)。
  • @Mr.St33l 正如我所说,这些方法应该存在于 1.4 中,但如果类路径中有另一个较旧的 commons-codec jar,您将获得此效果。
  • 我在哪里寻找类路径?
  • @Mr.St33l System.out.println(System.getProperty("java.class.path")) 在 STDOUT 上打印系统的类路径。如果您的 JSP 页面是 Web 应用程序的一部分,则可能存在不同的类路径。查看 Web 服务器管理控制台(我不太了解 Tomcat,无法告诉您所需的点击次数),您应该在其中找到每个 Web 应用程序的类路径。
  • 这是我的 CLASSPATH 中显示的内容:C:\Program Files (x86)\SAP BusinessObjects\tomcat\bin\bootstrap.jar;C:\Program Files (x86)\SAP BusinessObjects\tomcat\ bin\tomcat-juli.jar;C:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win64_x64\sapjvm\lib\tools.jar
猜你喜欢
  • 2015-05-25
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
相关资源
最近更新 更多