我正在尝试运行 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?