Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache Maven模块上的Java EJB依赖项注入失败_Java_Dependency Injection_Ejb - Fatal编程技术网

Apache Maven模块上的Java EJB依赖项注入失败

Apache Maven模块上的Java EJB依赖项注入失败,java,dependency-injection,ejb,Java,Dependency Injection,Ejb,我正试图将一个bean注入到我的程序主类中。我在Apache Maven下有两个模块: - Java Parent - Module1 - Module2 pom文件的一部分如下所示: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/

我正试图将一个bean注入到我的程序主类中。我在Apache Maven下有两个模块:

- Java Parent
  - Module1
  - Module2
pom文件的一部分如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>com.screening</groupId>
<artifactId>screening</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

<name>Java Parent</name>

<properties>
  <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<modules>
  <module>Module1</module>
  <module>Module2</module>
</modules>
</project>
我将该类注入到同一个模块中:

@Startup
@Singleton
public class Runner {

     @EJB
     private JDBCProcessor jdbcProcessor; // this is injected at runtime
}
JDBCProcessor是在运行时注入的,我可以使用JDBCProcessor的方法。当我将module2bean注入到Runner类中时,问题就出现了。它找不到我的班级。同样,它有@Stateless和@Local。即使我尝试使用@Remote,它仍然找不到它。我明白了

 javax.NamingNotFoundException

唯一的问题是注入不同模块中的bean。如何解决这个问题?

您是否记得在另一个模块的src/main/resources/META-INF中添加一个beans.xml

--更新--

它实际上不需要包含任何bean。应选择一个空的:

<?xml version="1.0" encoding="UTF-8"?>
<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://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>


否。此文件是否应为空?我的答案中的格式有点不确定,但这就是您所需要的。这将通知容器模块包含bean。我是否应该将这个beans.xml添加到module2?我是否应该将它添加到src/main/resources中,ApacheMaven会将它添加到META-INF中?您说过这是一个Maven项目。如果将META-INF文件夹放入src/main/resources,maven将为您将其构建到jar中。是的,它应该放在提供bean的项目中。如果有帮助,下面是另一个相关的答案:
 javax.NamingNotFoundException
<?xml version="1.0" encoding="UTF-8"?>
<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://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>