【发布时间】:2020-03-22 13:35:45
【问题描述】:
我想在一个 Maven 结构化项目的经典 Hello World 应用程序中使用 JBoss Weld 作为 CDI 工具。为了使事情尽可能干净和简单,我只创建了一个Weld 环境对象,仅此而已。我还在 src/main/resources/META-INF 中创建了部署描述符文件 beans.xml 和 src/test/resources 目录。我没有进一步创建和初始化WeldContainer 等。我只是想知道为什么这些设置一开始就不起作用。
应用程序完美编译并使用 mvn package 命令生成可执行 jar 文件。但是我遇到了运行时错误:
C:\dev\eclipse-workspace\my-app>java -cp target/my-app-1.0.jar app.Hello
Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/weld/environment/se/Weld
at app.Hello.main(Hello.java:7)
Caused by: java.lang.ClassNotFoundException: org.jboss.weld.environment.se.Weld
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.j
ava:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoader
s.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 1 more
所以,这是我的主要课程:
1 package app;
2
3 import org.jboss.weld.environment.se.Weld;
4
5 public class Hello {
6 public static void main(String[] args) {
7 Weld weld = new Weld();
8
9 System.out.println("Hello World");
10
11 weld.shutdown();
12 System.exit(0);
13 }
14 }
我的 pom.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>jee</groupId>
<artifactId>my-app</artifactId>
<version>1.0</version>
<name>my-app</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>13</maven.compiler.source>
<maven.compiler.target>13</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>3.1.3.Final</version>
</dependency>
</dependencies>
</project>
最后是我的项目结构:
提前感谢您的帮助。
谢谢。
亚历克斯
【问题讨论】:
-
您是否尝试在搜索引擎中发布错误?
-
谷歌如何构建一个“jar-with-dependencies”,这样做,再试一次。
标签: java cdi bootstrapping weld