You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Manifold动态生成POJO的可执行Jar运行时NPE问题排查

Manifold库打包可执行Jar后JSON动态转换POJO报错问题

我需要开发一个可执行Jar包,它接收命令行参数处理JSON文件,计划通过Manifold库将JSON动态转换为Java POJO,再运行算法针对特定用户角色确定内容排序。该应用在IntelliJ IDE中运行正常,但打包成可执行Jar后运行时出现如下错误:

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2024-07-29T12:33:14.586-07:00 ERROR 35361 --- [algorithm] [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.NullPointerException: Cannot invoke "manifold.rt.api.util.Pair.getFirst()" because "classSymbol" is null
    at manifold.ext.DynamicProxyFactory.hasCallHandlerFromExtension(DynamicProxyFactory.java:117) ~[manifold-ext-2024.1.29.jar!/:2024.1.29]
    at manifold.ext.DynamicProxyFactory.hasCallHandlerMethod(DynamicProxyFactory.java:102) ~[manifold-ext-2024.1.29.jar!/:2024.1.29]
    at manifold.ext.DynamicProxyFactory.makeProxyFactory(DynamicProxyFactory.java:52) ~[manifold-ext-2024.1.29.jar!/:2024.1.29]
    at manifold.ext.rt.RuntimeMethods.createProxy(RuntimeMethods.java:415) ~[manifold-all-2024.1.29.jar!/:2024.1.29]
    at manifold.ext.rt.RuntimeMethods.createNewProxy(RuntimeMethods.java:387) ~[manifold-all-2024.1.29.jar!/:2024.1.29]
    at manifold.ext.rt.RuntimeMethods.constructProxy(RuntimeMethods.java:63) ~[manifold-all-2024.1.29.jar!/:2024.1.29]
    at org.sampler.algorithm.Algorithm.getPillarToJourneyMapping(Algorithm.java:178) ~[!/:0.0.1-SNAPSHOT]
    at org.sampler.algorithm.Algorithm.getPathwayForPersona(Algorithm.java:67) ~[!/:0.0.1-SNAPSHOT]
    at org.sampler.algorithm.Application.run(Application.java:182) ~[!/:0.0.1-SNAPSHOT]
    at org.springframework.boot.SpringApplication.lambda$callRunner$5(SpringApplication.java:790) ~[spring-boot-3.3.1.jar!/:3.3.1]
    at org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:83) ~[spring-core-6.1.10.jar!/:6.1.10]
    at org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[spring-core-6.1.10.jar!/:6.1.10]
    at org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:88) ~[spring-core-6.1.10.jar!/:6.1.10]
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:798) ~[spring-boot-3.3.1.jar!/:3.3.1]
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:789) ~[spring-boot-3.3.1.jar!/:3.3.1]
    at org.springframework.boot.SpringApplication.lambda$callRunners$3(SpringApplication.java:774) ~[spring-boot-3.3.1.jar!/:3.3.1]
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[na:na]
    at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[na:na]
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[na:na]
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:774) ~[spring-boot-3.3.1.jar!/:3.3.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:342) ~[spring-boot-3.3.1.jar!/:3.3.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) ~[spring-boot-3.3.1.jar!/:3.3.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.1.jar!/:3.3.1]
    at org.sampler.algorithm.Application.main(Application.java:40) ~[!/:0.0.1-SNAPSHOT]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
    at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:91) ~[algorithm-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
    at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:53) ~[algorithm-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
    at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:58) ~[algorithm-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]

我已多次检查build.gradle文件配置,也尝试了fatJar打包方式,但仍无法解决该错误。推测问题出在Manifold库在命令行环境下无法正常从JSON生成Java类。

内容的提问来源于stack exchange,提问作者user7032261

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 07:17:33