java.lang.ClassNotFoundException: io.quarkus.runtime.Quarkus

use*_*odh 3 java web-services http quarkus

我正在尝试运行 quarkus 应用程序的 runner jar,它将在 http 上监听端口 9411。

以编程方式使用 UrlClassLoader,当我尝试加载它抛出的 jar 时(也使用 java -jar) 1.java.lang.ClassNotFoundException: io.quarkus.runtime.Quarkus

2.java.lang.reflect.InvocationTargetException 这里是代码片段,

        URLClassLoader loader = new URLClassLoader(
            new URL[]{ new File(<location of runner jar>).toURI().toURL()});
        Thread.currentThread().setContextClassLoader(loader);
        Class<?> mainClass = loader.loadClass("io.quarkus.runner.GeneratedMain"); 
        Method mainMethod = mainClass.getMethod("main", String[].class);
        mainMethod.invoke(null, (Object) new String[]{});
Run Code Online (Sandbox Code Playgroud)

另一个观察结果是,当我将 /lib 文件夹放在 runner jar 位置时,它会成功加载,这意味着它完全需要 lib 文件夹。

如何使我的代码仅适用于 runner jar?

Jan*_*ška 7

要生成一个包含运行应用程序所需的所有库的胖 jar,请使用该属性quarkus.package.uber-jar=true(您可以src/main/resources/application.properties在运行构建时将其添加到或作为系统属性传递)。