我正在尝试运行quarkus应用程序的runner jar,该应用程序将通过http上的端口9411进行侦听。
以编程方式使用UrlClassLoader,当我尝试加载jar时,它抛出(也使用java -jar)1.java.lang.ClassNotFoundException:io.quarkus.runtime.Quarkus
下面是一段代码,
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[]{});
另一个观察结果是当我把/lib文件夹放在runner jar位置时,它成功加载,这意味着它需要lib文件夹。
如何使我的代码只与runner jar一起工作?
2条答案
按热度按时间oogrdqng1#
要生成一个包含运行应用程序所需的所有库的fat jar,请使用属性
quarkus.package.uber-jar=true
(您可以将其添加到src/main/resources/application.properties
中,或者在运行构建时将其作为系统属性传递)。0mkxixxg2#
使用mvn clean包启动时出现以下错误:
我找到了
作为属性。
我更喜欢的是
在pom属性中。
https://github.com/fluentcodes/sandbox/tree/java-quarkus-empty