我创建了一个Java项目作为其他项目的库,减少了项目之间的代码重复。这个lib项目被导出到jar以包含在Web项目中(WAR,而不是EAR)。
在Web项目中(这些类被移除),所有的类都照常工作,而所有的类都保留在这些项目上──简单和复杂对象(带有生产者和设置的对象)的注入都正常工作。
移除Web项目的这些类并将具有这些相同类的jar添加到Web项目中(在Maven项目中的pom.xml中设置此库)之后,一切都将正常编译,就像以前一样。但是在启动服务器时,容器在CDI启动期间找不到jar中现在存在的类(CDI beans),从而产生以下(著名的)错误:
WELD-001408: Unsatisfied dependencies for type Session with qualifiers (...)
public class HibernateConnectionFactory {
@Produces
@ApplicationScoped @ConnectionBaseExample
public SessionFactory createSessionFactoryExample() {
Configuration configuration = new Configuration();
configurarSessionFactory(configuration, "baseExampleDS");
ServiceRegistry registry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
return configuration.buildSessionFactory(registry);
}
@Produces
@RequestScoped @ConnectionBaseExample
public Session createSessionExample(@ConnectionBaseExample SessionFactory sessionFactory) {
return sessionFactory.openSession();
}
public void destruirSessionExemplo(@Disposes @ConnectionBaseExample Session session) {
if (session.isOpen()) {
session.close();
}
}
}
public class ExampleLoggerProducer {
@Produces
public ExampleLogger createLogger(InjectionPoint injectionPoint) {
return new ExampleLogger(injectionPoint.getMember().getDeclaringClass());
}
}
Java EE7,CDI 1.1,WELD 2.1,server WildFly 8.1
经过一段时间的尝试,我找到了解决方案&我将beans.xml放在项目根文件夹内的META-INF文件夹上,它成功了!这与WELD文档中关于如何在JAR中使用CDI bean的描述背道而驰,其中指出将beans.xml放置在src/main/resources/meta-inf中,但这是可以的。也许在某些Maven项目中,这是真的。
[UPDATE]这是因为我使用Eclipse的export jar向导而不是使用Maven来构建jar。在src/main/resources/META-INF中使用Maven应该可以很好地与beans.xml配合使用。
希望这能帮助其他人在这种情况下也。
堆栈跟踪
我试图从java调用一个使用C样式字符串的C函数。当我使用C风格的字符串时,程序执行得很好,但正如我声明std::string时,不知何故,它再也找不到依赖库了。我在eclipse环境中检查了includes文件夹,它确实包含 这是我的本地文件: 这段代码可以很好地从java编译并运行良好,但只要我尝试使用std::string版本(注释),代码就会编译并创建动态库,但在运行java代码时,我会遇
我正在尝试实现一个quarkus-extension用于授权/认证。我使用现有的< code > quar kus-small rye-jwt-abx -扩展作为例子。一切似乎都很好,除了我不能注入< code>Principal: 我得到了 对 java.security.主体和限定符类型未满足的依赖关系 [@Default] 注入
我试图编写一个简单的Java程序,通过JNI调用C函数来打印“Hello World”。一切编译都没有错误,但当我运行程序时,我得到一个“UnsatisfiedLinkError:找不到依赖库”。 根据Dependency Walker和dumpbin的说法,唯一的依赖项是“kernel32.dll”,在C:\Windows\System32及其依赖项中,也在System32中。 使命感 返回时没
我正在尝试创建一个带有Wildfly和数据库连接的EJB Web项目,以持久化我的类“article”。但当我启动我的应用程序时,我得到了错误 包装服务; ArticleDaoImpl
我有一个属性XML文件,如下所示: 我该怎么解决这个?