gpt4 book ai didi

java - 使用 JBoss Weld 环境引导简单的 Java SE "Hello World"桌面应用程序会导致运行时错误

转载 作者:行者123 更新时间:2023-12-01 17:50:40 25 4
gpt4 key购买 nike

我想在 Maven 结构化项目的经典 Hello World 应用程序中使用 JBoss Weld 作为 CDI 工具。为了使事情尽可能干净和简单,我只创建了一个 Weld 环境对象,仅此而已。我还在 src/main/resources/META-INFbeans.xml 中创建了部署描述 rune 件 beans.xml strong>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

所以,这是我的主要类(class):

 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>

最后是我的项目结构:

enter image description here

提前感谢您的帮助。

谢谢。

亚历克斯

最佳答案

您会注意到,java -cp target/my-app-1.0.jar app.Hello 不包含类路径上的 Weld jar(除非您的 jar 文件的 META-INF/MANIFEST.MF 有一个引用它们的Class-Path 条目)。这就是为什么当您以这种方式启动应用程序时无法在运行时找到 Weld 类的原因。

关于java - 使用 JBoss Weld 环境引导简单的 Java SE "Hello World"桌面应用程序会导致运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60799983/

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