Bootstrap простое Java SE настольное приложение "Hello World", использующее среду JBoss Weld, вызывает ошибку во время выполнения - PullRequest
0 голосов
/ 22 марта 2020

Я бы хотел использовать JBoss Weld в качестве средства CDI в классическом c приложении Hello World в структурированном проекте maven. Чтобы все было максимально чисто и просто, я создал только объект среды Weld и ничего более. Я также создал файл дескриптора развертывания bean. xml в src / main / resources / META-INF и src / test / resources каталоги. Я не стал go дальше, создав и инициализировав WeldContainer et c. Мне просто интересно, почему эти настройки не работают в первую очередь.

Приложение отлично компилируется и генерирует исполняемый файл jar с помощью команды mvn package . Однако я получил ошибку во время выполнения:

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 }

my pom. xml file:

<?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

Ваша помощь приветствуется заранее.

Спасибо.

Алекс

1 Ответ

0 голосов
/ 23 марта 2020

Вы заметите, что java -cp target/my-app-1.0.jar app.Hello не включает банки сварных швов на пути к классам (если только в вашем файле jar META-INF/MANIFEST.MF нет записи Class-Path, которая ссылается на них). Вот почему классы сварки нельзя найти во время выполнения, когда вы запускаете свое приложение таким образом.

...