背景:我正在尝试将一些代码添加到自定义Oracle OAM插件中。我添加的新代码是尝试访问Oracle称之为#34;身份上下文"。我从https://docs.oracle.com/cd/E27559_01/admin.1112/e27239/id_context.htm#AIAAG7296获得了一些测试代码示例,但是必须包含两个额外的jar IdentityContext.jar和jps-api.jar(用于AppSecurityContext),然后我将这些文件放入托管服务器上的WebLogic Domain / lib目录中,然后退回托管服务器。
之后,我仍然得到一个ClassNotFoundException,但它看起来与我习惯的有点不同:
Caused By: java.lang.ClassNotFoundException: oracle.security.jps.runtime.AppSecurityContext not found by SampleAuthPlugin [1]
所以我不理解错误,因为我添加的两个JAR都有AppSecurityContext类和相关的内部类类,所以我假设"不同的"异常告诉我一些事情(BTW,SampleAuthPlugin是我的自定义插件,它具有访问Identity上下文的代码)。
我有点猜测某些东西(可能是Oracle OAM插件基础结构)没有使用普通的WebLogic类路径,因此即使我将JAR放入DOMAIN / lib,SampleAuthPlugin也会导致查找AppSecurityContext的内容。在一个不同的目录中的JAR中的类??
谢谢, 吉姆
编辑:这是一个更广泛的堆栈跟踪 - 它看起来像SampleAuthPlugin IS使用它自己的(或一个不同的/特殊的)类加载器?Caused By: java.lang.ClassNotFoundException: oracle.security.jps.runtime.AppSecurityContext not found by SampleAuthPlugin [1]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1550)
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1988)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sample.SampleAuthPlugin$1.run(SampleAuthPlugin.java:606)
at java.security.AccessController.doPrivileged(Native Method)
at sample.SampleAuthPlugin.getIDContext(SampleAuthPlugin.java:605)
at sample.SampleAuthPlugin.ListContext(SampleAuthPlugin.java:584)
at sample.SampleAuthPlugin.process(SampleAuthPlugin.java:406)
答案 0 :(得分:0)
至少在我的情况下,以下工作:
Bundle-Classpath:。,jps-ee.jar等。
仅供参考,我使用Netbeans构建了我的插件jar,第二步,我将jps-ee.jar放在Netbeans项目中。