在JBoss上部署Java应用程序时遇到了一个愚蠢的问题。在我使用接口类更改源代码之前,一切都很好。所以这是我的问题:
public interface FWInterface {
public FWResult process(FWRequest fwRequest, FWResult fwResult,
Integer commitRows) throws Exception;
}
...
@Stateless
public class FWHandlerSqrMind extends FWHandlerDefault implements FWInterface {
public FWResult process(FWRequest fwRequest, FWResult fwResult, Integer commitRows)
throws Exception {
... some JavaCode here
}
}
在JBoss 7.1上部署时会出现以下错误:
10:05:34,838 ERROR [org.jboss.msc.service.fail](MSC服务主题) 1-6)MSC00001:无法启动服务 。jboss.deployment.unit" MDK-交换1.1.0.war" .WeldService: 服务中的org.jboss.msc.service.StartException 。jboss.deployment.unit" MDK-交换1.1.0.war" .WeldService: org.jboss.weld.exceptions.DeploymentException:WELD-001408不满意 具有限定符的类型[FWHandlerAufTracking]的依赖项 [@Default]注入点[[field] @Inject de.mdkbw.exchange.filewatcher.FWMain.fwhAufTracking] at org.jboss.as.weld.services.WeldService.start(WeldService.java:83)at org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) [rt.jar:1.7.0_15] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源) [rt.jar:1.7.0_15]在java.lang.Thread.run(未知来源) [rt.jar:1.7.0_15]引起: org.jboss.weld.exceptions.DeploymentException:WELD-001408不满意 具有限定符的类型[FWHandlerAufTracking]的依赖项 [@Default]注入点[[field] @Inject de.mdkbw.exchange.filewatcher.FWMain.fwhAufTracking] at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:311) 在 org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:280) 在 org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:143) 在 org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:163) 在 org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:382) 在 org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:367) 在 org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:379) 在org.jboss.as.weld.WeldContainer.start(WeldContainer.java:83)at org.jboss.as.weld.services.WeldService.start(WeldService.java:76)
如果我删除了实现,一切都还可以。谁能告诉我问题是什么?我太傻了?提前谢谢!
答案 0 :(得分:8)
你如何注射豆子?那样的吗?
@Inject
private FWHandlerSqrMind handler;
如果是这样,你可以试着像那样注射它:
@Inject
private FWInterface handler;
答案 1 :(得分:6)
您的类路径中是否有META-INF / beans.xml或WEB-INF / beans.xml文件?
答案 2 :(得分:6)
缺少beans.xml是我的问题(WildFly 8.2.0) 只需放置一个简单的beans.xml就可以解决这个问题:
<?xml version="1.0"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd" />