【问题标题】:java.lang.IllegalArgumentException: Der Rückgabetyp der Lebenszyklusmethode [init] muss "void" seinjava.lang.IllegalArgumentException: Der Rückgabetyp der Lebenszyklusmethode [init] muss "void" sein
【发布时间】:2014-08-17 19:51:09
【问题描述】:

我正在使用 GlassFish Server 在 NetBeans 中创建一个 java/jsf Web 应用程序。当我尝试部署应用程序时,它失败并出现以下错误:

GlassFish Server 4, deploy, null, false
C:\Users\Wais\Documents\JSF-Unterlagen\Kapitel_8_JavaServerFaces_im_Einsatz_OnlineBanking\banking\build\nbproject\build-impl.xml:1039: The module has not been deployed.
See the server log for details.
BUILD FAILED (total time: 16 seconds)

GlassFish 服务器日志文件:

[2014-08-17T01:35:04.193+0200] [glassfish 4.0] [SEVERE] [] [javax.enterprise.system.core] [tid: _ThreadID=35 _ThreadName=admin-listener(2)] [timeMillis: 1408232104193] [levelValue: 1000] [[
  Ausnahme beim Deployment der Anwendung [OnlineBanking] : Der Rückgabetyp der Lebenszyklusmethode [init] muss "void" sein. Verwandte Annotationsinformationen: Annotation [@javax.annotation.PostConstruct()] zu annotiertem Element [public java.lang.String de.jsfpraxis.managedbean.DBInit.init()] des Typs [METHOD]. 
Der Rückgabetyp der Lebenszyklusmethode [init] muss "void" sein. Verwandte Annotationsinformationen: Annotation [@javax.annotation.PostConstruct()] zu annotiertem Element [public java.lang.String de.jsfpraxis.managedbean.DBInit.init()] des Typs [METHOD]. 
    at org.glassfish.apf.impl.AnnotationProcessorImpl.process(AnnotationProcessorImpl.java:367)
    at org.glassfish.apf.impl.AnnotationProcessorImpl.process(AnnotationProcessorImpl.java:375)
    at org.glassfish.apf.impl.AnnotationProcessorImpl.processAnnotations(AnnotationProcessorImpl.java:289)
    at org.glassfish.apf.impl.AnnotationProcessorImpl.process(AnnotationProcessorImpl.java:217)
    at org.glassfish.apf.impl.AnnotationProcessorImpl.process(AnnotationProcessorImpl.java:134)
    at com.sun.enterprise.deployment.archivist.Archivist.processAnnotations(Archivist.java:626)
    at com.sun.enterprise.deployment.archivist.Archivist.readAnnotations(Archivist.java:462)
    at com.sun.enterprise.deployment.archivist.Archivist.readAnnotations(Archivist.java:446)
    at com.sun.enterprise.deployment.archivist.Archivist.readRestDeploymentDescriptors(Archivist.java:419)
    at com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:396)
    at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:271)
    at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:280)
    at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:241)
    at com.sun.enterprise.deployment.archivist.ApplicationFactory.openArchive(ApplicationFactory.java:161)
    at org.glassfish.javaee.core.deployment.DolProvider.processDOL(DolProvider.java:198)
    at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:222)
    at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:96)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.loadDeployer(ApplicationLifecycle.java:878)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.setupContainerInfos(ApplicationLifecycle.java:818)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:374)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
    at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Der Rückgabetyp der Lebenszyklusmethode [init] muss "void" sein
    at com.sun.enterprise.deployment.annotation.handlers.AbstractResourceHandler.validateAnnotatedLifecycleMethod(AbstractResourceHandler.java:191)
    at com.sun.enterprise.deployment.annotation.handlers.PostConstructHandler.processAnnotation(PostConstructHandler.java:72)
    at com.sun.enterprise.deployment.annotation.handlers.AbstractResourceHandler.processAnnotation(AbstractResourceHandler.java:142)
    at com.sun.enterprise.deployment.annotation.factory.SJSASFactory$LazyAnnotationHandler.processAnnotation(SJSASFactory.java:148)
    at org.glassfish.apf.impl.AnnotationProcessorImpl.process(AnnotationProcessorImpl.java:344)
    ... 52 more
]]

【问题讨论】:

  • 尝试将您的环境切换为英语。当您在其中粘贴英文异常消息时,Google 会出现更多点击。即使你有一个相当不言自明的......
  • 有趣的一行是德语句子:Der Rückgabetyp der Lebenszyklusmethode [init] muss "void" sein 的意思是“作为生命周期方法的返回类型 [init] 必须是“void”。跨度>
  • 部署应用程序 [网上银行] 时出现异常。相关注解信息:注解 [@javax.annotation.PostConstruct()] 到被注解的元素 [public java.lang.String de.jsfpraxis.managedbean.DBInit.init()] 类型为 [METHOD]。 Be生命周期方法[init]的返回类型必须为“void”。相关注解信息:注解 [@javax.annotation.PostConstruct ()] 到 [METHOD] 类型的注解元素 [public java.lang.String de.jsfpraxis.managedbean.DBInit.init ()]。
  • 我想知道如何解决这个问题?我需要一种更简单的方法来放置或替换返回类型“void”。
  • 对不起,我是 JSF/Web 应用程序的初学者,没有像你这样的知识,如果你说的异常中已经提到了所有类/方法名,为什么不t 运行我的网络应用程序。

标签: jsf postconstruct


【解决方案1】:

所以,你得到了这个错误:

Der Rückgabetyp der Lebenszyklusmethode [init] muss “void” sein。

这个的英文翻译是:

生命周期方法 [init] 的返回类型必须为“void”。

错误的其余部分表示它与此方法上的 @PostConstruct 注释有关:

public java.lang.String de.jsfpraxis.managedbean.DBInit.init()

该方法显然返回 java.lang.String 而不是 void

package de.jsfpraxis.managedbean;

public class DBInit {

    @PostConstruct
    public String init() {
        // ...
    }

}

这确实是错误!这违反了contract,其中包括:

...方法的返回类型必须是void ...

相应地修复它:

package de.jsfpraxis.managedbean;

public class DBInit {

    @PostConstruct
    public void init() {
        // ...
    }

}

【讨论】:

  • 现在我明白你说的了,可能是我的英语知识不太好,我尝试解决它,提前谢谢你!
  • 现在,鉴于答案仍未被接受,您是否设法真正解决了问题?
  • 太好了。由于您是新来的,请不要忘记在回答(最)有助于理解和解决具体问题时将其标记为已接受。另见How does accepting an answer work?
猜你喜欢
  • 2021-12-01
  • 2017-07-12
  • 2011-08-24
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
  • 2022-01-22
相关资源
最近更新 更多