java.lang.IllegalArgumentException: Der Rückgabetyp der Lebenszyklusmethode [init] muss void sein

Я создаю веб-приложение java/jsf в NetBeans, используя сервер GlassFish. Когда я пытаюсь развернуть приложение, это не удается и я получаю следующую ошибку:

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
]]

person Amin    schedule 17.08.2014    source источник
comment
Попробуйте переключить среду на английский. Среди других Google есть НАМНОГО БОЛЬШЕ хитов, когда вы вставляете туда сообщение об исключении на английском языке. Даже когда вы получили довольно самоочевидный ...   -  person BalusC    schedule 18.08.2014
comment
Интересная строка, представляющая собой предложение на немецком языке: Der Rückgabetyp der Lebenszyklusmethode [init] muss void sein означает Be возвращаемый тип метода жизненного цикла [init] должен быть недействительным.   -  person Amin    schedule 19.08.2014
comment
Исключение при развертывании приложения [Интернет-банк]. Связанная информация об аннотациях: аннотация [@ javax.annotation.PostConstruct ()] к аннотированному элементу [public java.lang.String de.jsfpraxis.managedbean.DBInit.init ()] типа [METHOD]. Be возвращаемый тип метода жизненного цикла [init] должен быть пустым. Связанная информация об аннотациях: аннотация [@ javax.annotation.PostConstruct ()] к аннотированному элементу [public java.lang.String de.jsfpraxis.managedbean.DBInit.init ()] типа [METHOD].   -  person Amin    schedule 19.08.2014
comment
Я хочу знать, как я могу решить эту проблему? Мне нужен более простой способ поставить или заменить возвращаемый тип void в точках.   -  person Amin    schedule 19.08.2014
comment
Извините, я новичок в JSF/веб-приложении и не так много знаю, как вы, если все имена классов/методов уже упомянуты в исключении, как вы сказали, почему мое веб-приложение не запускается.   -  person Amin    schedule 19.08.2014


Ответы (1)


Итак, вы получили эту ошибку:

Der Rückgabetyp der Lebenszyklusmethode [init] muss "пустой" sein.

Английский перевод этого:

Тип возвращаемого значения метода жизненного цикла [init] ДОЛЖЕН быть «пустым».

В остальной части ошибки говорится, что это касается аннотации @PostConstruct к этому методу:

публичный java.lang.String de.jsfpraxis.managedbean.DBInit.init()

Этот метод, по-видимому, возвращает java.lang.String вместо void:

package de.jsfpraxis.managedbean;

public class DBInit {

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

}

Это действительно неправильно! Это нарушает контракт, в котором, среди прочего, говорится:

... Тип возвращаемого значения метода ДОЛЖЕН быть пустым ...

Исправьте это соответствующим образом:

package de.jsfpraxis.managedbean;

public class DBInit {

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

}
person BalusC    schedule 19.08.2014
comment
Теперь я понял, что вы говорите, возможно, мои знания английского языка не так хороши, я попытаюсь исправить это, заранее спасибо! - person Amin; 19.08.2014
comment
И теперь, учитывая, что ответ все еще не принят, удалось ли вам решить проблему? - person BalusC; 21.08.2014
comment
Замечательно. Поскольку вы здесь впервые, не забудьте отметить принятый ответ всякий раз, когда он помог (больше всего) понять и решить конкретную проблему. См. также Как работает принятие ответа? - person BalusC; 23.08.2014