gpt4 book ai didi

java - 在同一方法上使用 @Secured 和 @RequestMapping 时出现 ClassFormatError

转载 作者:行者123 更新时间:2023-12-02 09:39:34 24 4
gpt4 key购买 nike

当我尝试在已注释的 @Controller 方法中使用 @Secured@PreAuthorize 时,抛出了一个奇怪的错误@RequestMapping。当我尝试启动应用程序时(在 win 7 32 位上使用 spring STS 2.8.1 和 vFabric 2.6.1,同时使用 springframework 和 spring security 3.1),它给了我以下错误:

Caused by: java.lang.ClassFormatError: Duplicate method name&signature in class file com/dnp/web/controllers/HomeController
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2820)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1150)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:258)
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:417)
at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1283)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1254)
... 43 more

Controller 代码:

@Controller
public class HomeController {

private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

@PreAuthorize("hasRole('ROLE_USER')")
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! the client locale is "+ locale.toString());

Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

String formattedDate = dateFormat.format(date);

model.addAttribute("serverTime", formattedDate );

return "home";
}
}

我不知道为什么会抛出这个错误,也没有在互联网上找到任何关于它的信息。此外,服务层上的安全注释也可以正常工作。

PD:完整的应用程序跟踪位于:http://pastebin.com/raw.php?i=VxdYPDXL ,安全性和 servlet 上下文的主要部分都在这里:http://pastebin.com/cva5VgkH

最佳答案

@rabusmar,我从 SpringForum 获得此链接 http://forum.springsource.org/showthread.php?109850-RequestMapping-and-PreAuthorize-not-compatible

似乎预授权和请求映射不兼容。他们在页面末尾给出了解决方案。尝试一下。

此外,当已经由一个注释检测的类再次由另一个注释检测时,会出现 ClassFormatError ,在您的情况下,HomeController 可能已经由 PreAuthorize 检测,并再次由 RequestMapping 检测,反之亦然,这就是您获得类格式错误。

您可以尝试我上面给出的 Spring 论坛链接中给出的解决方案。

关于java - 在同一方法上使用 @Secured 和 @RequestMapping 时出现 ClassFormatError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com