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

使用ProGuard 7.3.2与OpenJDK11时遭遇JSONException错误求助

OpenJDK 11环境下ProGuard执行报错:NoClassDefFoundError: org/json/JSONException

本人使用OpenJDK 11,以下是我的ProGuard配置:

<proguard ignorewarnings="true" repackageclasses="controller.deps" allowaccessmodification="true" skipnonpubliclibraryclasses="false" skipnonpubliclibraryclassmembers="false" optimize="false" overloadaggressively="false" printmapping="agent-bootstrap.map" renamesourcefileattribute="SourceFile" verbose="true" >
                        <!-- we can use the path here, because we shrink the result -->
                        <!-- we can also drop all .xsl, .properties and other META-INF data from libs -->
                        <injar refid="dist.path" filter="!**/*.xsl,!**/*.properties,!META-INF/**" />
                        <injar file="${build.dir}/apg-bootstrap-agent-no-deps.jar" />
                        <outjar file="${build.lib.dir}/apg-bootstrap-agent.jar" />
             
                        <!-- keep attributes -->
                        <keepattribute name="*" />
            <libraryjar file="${libs.dir}/sax-2.0.1.jar" />
            <libraryjar file="${libs.dir}/jdk_logging.jar" /> <!-- Not sure if this a valid jar added this jar as it was not able to find reference classes -->
            <libraryjar file="${libs.dir}/java-json.jar" />
            <!-- <libraryjar file="${libs.dir}/java-rt-jar-stubs-1.5.0.jar" /> -->
            <libraryjar file="${libs.dir}/jaxb/jaxb-api-2.3.0.jar" />
            <libraryjar file="${libs.dir}/jaxb/javax.activation-1.2.0.jar" />
            <libraryjar file="${libs.dir}/sql.jar" />
            <libraryjar file="${libs.dir}/javax.xml-1.3.4.jar" />
            <libraryjar file="${libs.dir}/javax.xml.stream-3.0.1.jar" />
               

            <!-- global libraries -->
                      <!--  <libraryjar file="${java6.home}/lib/rt.jar" /> -->
            <libraryjar file="/opt/jdk-11/jmods/java.base.jmod" />
            <libraryjar file="/opt/jdk-11/jmods/java.desktop.jmod" />
            <libraryjar file="/opt/jdk-11/jmods/java.management.jmod" />
                        <!-- still keep static fields, even if they have been inlined by the compiler -->
                        <keepclassmembernames name="*">
                                <field access="static" type="%" name="*" />
                                <field access="static" type="java.lang.String" name="*" />
                        </keepclassmembernames>
             
                        <!-- keep the agent entry point -->
                        <keep name="controller.ConBootstrap*">
                                <method name="premain" />
                        </keep>
                </proguard>

<path id="build.path">
        <fileset dir="${libs.dir}">
            <libraryjar file="${libs.dir}/java-json.jar" />
        </fileset> 
        <path refid="dist.path" />
    </path>

运行时出现如下错误:

java.lang.NoClassDefFoundError: org/json/JSONException
19:02:06    at proguard.obfuscate.MappingPrinter.visitProgramClass(MappingPrinter.java:97)
19:02:06    at proguard.classfile.ProgramClass.accept(ProgramClass.java:544)
19:02:06    at proguard.classfile.ClassPool.classesAcceptAlphabetically(ClassPool.java:310)
19:02:06    at proguard.obfuscate.Obfuscator.execute(Obfuscator.java:654)
19:02:06    at proguard.pass.PassRunner.run(PassRunner.java:24)
19:02:06    at proguard.ProGuard.obfuscate(ProGuard.java:505)
19:02:06    at proguard.ProGuard.execute(ProGuard.java:212)
19:02:06    at proguard.ant.ProGuardTask.execute(ProGuardTask.java:333)
19:02:06    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
19:02:06    at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
19:02:06    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
19:02:06    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
19:02:06    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
19:02:06    at org.apache.tools.ant.Task.perform(Task.java:348)
19:02:06    at org.apache.tools.ant.Target.execute(Target.java:435)
19:02:06    at org.apache.tools.ant.Target.performTasks(Target.java:456)
19:02:06    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
19:02:06    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
19:02:06    at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
19:02:06    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:440)
19:02:06    at org.apache.tools.ant.AntBridge.call(AntBridge.java:61)
19:02:06    at org.apache.tools.ant.AntBridge.call(AntBridge.java:17)
19:02:06    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
19:02:06    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
19:02:06    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
19:02:06    at java.base/java.lang.Thread.run(Thread.java:834)
19:02:06 Caused by: java.lang.ClassNotFoundException: org.json.JSONException
19:02:06    at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1366)
19:02:06    at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1315)
19:02:06    at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1068)
19:02:06    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)

已尝试以下三种解决方案,但问题仍未解决,恳请协助:

  • 仅在build.path中添加java-json.jar;
  • 同时在build.path和ProGuard的libraryjars中添加java-json.jar;
  • 仅在ProGuard的libraryjars中添加java-json.jar;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:14:57