引发者:java.lang.ClassNotFoundException:SampleAuthPlugin [1]找不到oracle.security.jps.runtime.AppSecurityContext

时间:2017-09-06 02:40:39

标签: java oracle weblogic classpath

背景:我正在尝试将一些代码添加到自定义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)

1 个答案:

答案 0 :(得分:0)

至少在我的情况下,以下工作:

  1. 在我的插件JAR中,我在META-INF / MANIFEST.MF中添加了以下内容:
  2. Bundle-Classpath:。,jps-ee.jar等。

    1. 然后,我将jps-ee.jar放入插件jar的根目录。
    2. 仅供参考,我使用Netbeans构建了我的插件jar,第二步,我将jps-ee.jar放在Netbeans项目中。