问题:尝试将我的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/