加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 尝试运行时出错焊接Se Applicaton – 焊接SE容器无法初

发布时间:2020-12-15 04:34:18 所属栏目:Java 来源:网络整理
导读:我使用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 clinitINFO: WEL
我使用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 IssuessrcmainresourcesMETA-INFbeans.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>

我的主要课程是:

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文件.它只是编译类并使用类路径上的resources目录运行主类(执行gradle –info运行以自行查看). Weld需要一个 bean archive,它是一个包含META-INF / beans.xml的jar文件或一个包含WEB-INF / classes / META-INF / beans.xml的war文件. beans.xml只是在类路径上是不够的.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读