gpt4 book ai didi

java - 尝试运行 Weld Se 应用程序时出错 - 无法初始化 Weld SE 容器 - 找不到 bean 文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:22:58 25 4
gpt4 key购买 nike

我使用 Weld SE 创建了一个简单的 JavaSE 应用程序。我正在尝试使用 gradle run 运行它会抛出异常:

:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:runmai 17, 2016 12:55:55 AM org.jboss.weld.bootstrap.WeldStartup <clinit>
INFO: WELD-000900: 2.3.4 (Final)
Exception in thread "main" java.lang.IllegalStateException: WELD-ENV-002009: Weld SE container cannot be initialized - no bean archives found
at org.jboss.weld.environment.se.Weld.createDeployment(Weld.java:690)

at org.jboss.weld.environment.se.Weld.initialize(Weld.java:570)
at br.com.alexpfx.crawler.run.Main.main(Main.java:14)
FAILED
1 result found for 'bean-discovery-mode'Finding with Options: Case Insensitive

y
bean-discovery-mode
1 found
Find






Replace in current buffer
Replace
Replace All
Gradle: runFile 0Project 0No Issuessrc\main\resources\META-INF\beans.xml10:1
CRLFUTF-8XML1 update

据我所知,它找不到 beans.xml 文件。但它在 src/main/resources/META-INF/beans.xml 中:

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all"
version="1.1">


</beans>

我的主要类(class)是:

package br.com.alexpfx.crawler.run;
import org.jboss.weld.environment.se.*;
import javax.enterprise.inject.*;
import javax.inject.*;
import br.com.alexpfx.crawler.*;
public class Main {

@Inject
private @Named("SuperMarket") Crawler crawler;


public static void main(String[] args) {
Weld weld = new Weld();
WeldContainer container = weld.initialize();
Main main = container.instance().select(Main.class).get();
main.run();
weld.shutdown();
}


public void run() {

System.out.println (crawler);

}
}

构建 gradle 文件是:

apply plugin: 'java'
apply plugin: 'application'



repositories{
mavenCentral()
}


dependencies{
// http://mvnrepository.com/artifact/org.jsoup/jsoup
compile group: 'org.jsoup', name: 'jsoup', version: '1.9.1'

// http://mvnrepository.com/artifact/org.jboss.weld.se/weld-se-core
compile group: 'org.jboss.weld.se', name: 'weld-se-core', version: '2.3.4.Final'



}

sourceCompatibility = '1.8'
version = '1.0'
mainClassName = 'br.com.alexpfx.crawler.run.Main'

最佳答案

问题是 gradle run不会为您的应用构建 jar 文件。它只是编译类并使用类路径上的资源目录运行主类(执行 gradle --info run 以亲自查看)。焊接需要 bean archive这是一个包含 META-INF/beans.xml 的 jar 文件或包含 WEB-INF/classes/META-INF/beans.xml 的 war 文件.这还不够 beans.xml只是在类路径上。

要解决这个问题,因为您正在使用应用程序插件,只需执行 gradle installDist并运行 build/install/myapp/bin 中的 shell 脚本或批处理文件.

关于java - 尝试运行 Weld Se 应用程序时出错 - 无法初始化 Weld SE 容器 - 找不到 bean 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37266860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com