为了账号安全,请及时绑定邮箱和手机立即绑定

新的 JSONObject 触发 java.lang.NoClassDefFoundError

新的 JSONObject 触发 java.lang.NoClassDefFoundError

慕桂英546537 2023-03-31 14:38:08
我正在使用JDeveloper IDE以 Java 语言为OAM(Oracle Access Manager)开发自定义身份验证插件。我正在解析 a并从文件中正确地URL获取我想要的变量,而不会触发任何类型的JSONObject Main.class Exception这使我假设整个解析代码是 正确的,这意味着该readJsonFromUrl 函数可以正常工作。让我提一下我的PhillPlugin.class内容public ExecutionStatus process(AuthenticationContext context),当插件运行时触发。public void getDataGenerate(String Url), 调用内部流程函数来创建JSONObjectfromURLpublic static JSONObject readJsonFromUrl(String url)在getDataGenerate函数中调用private static String readAll(Reader rd)用于解析内部readJsonFromUrl现在我将插件上传到服务器,我运行它并在它的日志中获得以下内容java.lang.NoClassDefFoundError: org/json/JSONObject     at phillplugin.PhillPlugin.readJsonFromUrl(PhillPlugin.java:184)     at phillplugin.PhillPlugin.getDataGenerate(PhillPlugin.java:132)     at phillplugin.PhillPlugin.process(PhillPlugin.java:63)创建插件需要什么:PhillPlugin.classPhillPlugin.xmlMANIFEST.MF我提到上面的内容是因为我必须在这些文件的某处包含路径org.json。(它已经作为导入存在 PhillPlugin.class并且Main.class)org.json.jar包含在项目的库中以及所有 .jars以构建插件清单文件Manifest-Version: 1.0Bundle-Version: 10Bundle-Name: PhillPluginBundle-Activator: phillplugin.PhillPluginBundle-ManifestVersion: 2Import-Package: org.osgi.framework;version="1.3.0",oracle.security.am.plugin,oracle.security.am.plugin.authn,oracle.security.am.plugin.impl,oracle.security.am.plugin.api,oracle.security.am.common.utilities.principal,oracle.security.idm,javax.security.authBundle-SymbolicName: PhillPluginCLASSPATH: felix.jar, identitystore.jar, oam-plugin.jar, utilities.jar, org.json.jarPhillPlugin.Class 示例出于安全目的,我不应该包含该 URL。(相信我这是有效的)我太担心这个MANIFEST.MF文件了,因为我可能在那里做错了什么抱歉发了这么长的帖子,如果需要我会提供任何额外的信息,谢谢
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

在编写Authenticaiton Pluginfor Server 时,所有额外的库以及外部文件OAM都应该被提及。MANIFEST.MF.jar

此外,所有.jar文件都应部署在最终插件.jar以及外部插件中。libraries

就我而言,我必须org.json.jar在导出时PhillPlugin.jar包括如下内容:

  • PhillPlugin.jar

//img1.sycdn.imooc.com//64267ffb00017df404520145.jpg

如您所见org.json.jar,它的库org是必需的

  • 清单.MF

最后一步是在您的插件中使用的MANIFEST.MF所有额外内容中提及classes

就我而言,我必须将其包含在我的Import-Package属性中才能创建JSONObject实例

org.json;resolution:=optional,
org.json.JSONObject;resolution:=optional

如果您想使用 a ,JSONArray则必须添加以下内容:

org.json.JSONArray;resolution:=optional

等等。

编辑:应按如下方式提及类路径:

Bundle-ClassPath: org.json.jar, felix.jar, identity-provider.jar, oam-plugin.jar, utilities.jar



查看完整回答
反对 回复 2023-03-31
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

CLASSPATH中的条目显然MANIFEST.MF是错误的。

查看完整回答
反对 回复 2023-03-31
  • 2 回答
  • 0 关注
  • 325 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信