问题:尝试将我的WAR部署到Glassfish 4.1.1时,我始终收到以下WELD异常。该应用程序可以在Wildfly 9.0上正确部署。


  加载应用程序时发生异常:java.lang.IllegalStateException:ContainerBase.addChild:开始:org.apache.catalina.LifecycleException:org.apache.catalina.LifecycleException:org.jboss.weld.exceptions.DefinitionException:WELD-001508:无法创建来自[EnhancedAnnotatedTypeImpl]公共抽象接口@Path类com.example.package.MyService的InjectionTarget,因为它是一个接口


在这里,MyService实际上是一个接口,在单独的库中定义。我的应用程序将库放入其中,因此它可以针对MyService接口创建代理并发出请求。 MyService看起来像:

@Path("api")
public interface MyService {

    @GET
    public void someMethod();
}


我尝试通过将以下内容添加到MyService文件来从WELD中排除beans.xml,但无济于事:(

<scan>
    <exclude name="com.example.package.*"></exclude>
</scan>



为什么WELD试图包含该库的接口?
我如何告诉它忽略它?

最佳答案

您也可以尝试创建package-info.java文件并使用@Vetoed

@Vetoed
package com.example.package;

import javax.enterprise.inject.Vetoed;

关于java - Glassfish 4的Weld 001508异常:如何忽略接口(interface)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34323488/

10-10 08:05