【发布时间】:2014-07-11 20:09:47
【问题描述】:
我尝试在 JBoss AS 7.1.1(Windows 7 企业版)上部署打包为 WAR 的 Spring Boot 应用程序,但失败并出现错误。为了消除我自己的应用程序的问题,我决定按照 Spring 指南 Converting a Spring Boot JAR Application to a WAR 使用更简单的应用程序再次尝试。
我下载了source for the guide 并按照创建WAR 的说明编译了“完成”版本,但是包失败并在部署时出现同样的错误。
11:59:37,490 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/gs-convert-jar-to-war-0.1.0]] (MSC service thread 1-2) Exception starting filter errorPageFilter: java.lang.IllegalAccessException: Class org.jboss.as.web.deployment.WebInjectionContainer can not access a member of class org.springframework.boot.context.web.ErrorPageFilter with modifiers ""
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65) [rt.jar:1.6.0_20]
at java.lang.Class.newInstance0(Class.java:349) [rt.jar:1.6.0_20]
at java.lang.Class.newInstance(Class.java:308) [rt.jar:1.6.0_20]
at org.jboss.as.web.deployment.WebInjectionContainer.newInstance(WebInjectionContainer.java:80) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.web.deployment.WebInjectionContainer.newInstance(WebInjectionContainer.java:72) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:441) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3269) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3865) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_20]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_20]
at java.lang.Thread.run(Thread.java:619) [rt.jar:1.6.0_20]
我查看了ErrorPageFilter 的源代码,发现该类是包私有的,这可能是IllegalAccessException 的原因。
所以我的问题……
- 包私有的类实际上是原因吗?
- 如果是这样,有什么方法可以在不放弃
ErrorPageFilter的情况下解决这个问题(例如 Java 魔法)?
【问题讨论】:
标签: java spring jboss7.x war spring-boot