java - 由 : java. lang.ClassNotFoundException : org. eclipse.core.runtime.Plugin 引起

标签 java osgi xpages lotus-notes lotus-domino

最近我一直在尝试设置和自定义scheduler在我们的 XPages 项目中。我尝试将以下代码片段放入我们的项目中:

import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class Activator extends Plugin implements BundleActivator {

 @Override
    public void start(final BundleContext context) throws Exception {
       // Here you start your scheduler
    }

}

在模板的 Code 部分中,我可以轻松编写此代码,并且不会收到有关 Unresolved 依赖项的警告。因此,我认为 org.eclipse.core.runtime 和 org.osgi.framework 包必须随 Domino 一起提供。

但似乎没有。

每当执行此代码时,我都会在浏览器和堆栈中收到 500 错误,如下所示:

javax.servlet.ServletException: java.lang.NoClassDefFoundError: org.eclipse.core.runtime.Plugin
    at com.ibm.xsp.webapp.FacesServlet.handleError(FacesServlet.java:595)
    at com.ibm.xsp.webapp.FacesServlet.renderErrorPage(FacesServlet.java:424)
    at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:182)
    at com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)
    at com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
    at com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:588)
    at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335)
    at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:865)
    at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:808)
    at com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:577)
    at com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319)
    at com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662)
    at com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482)
    at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:357)
    at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:313)
    at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
Caused by: java.lang.NoClassDefFoundError: org.eclipse.core.runtime.Plugin
    at java.lang.ClassLoader.defineClassImpl(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:346)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:154)
    at com.ibm.domino.xsp.module.nsf.ModuleClassLoader$DynamicClassLoader.findClass(ModuleClassLoader.java:455)
    at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:850)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:829)
    at com.ibm.domino.xsp.module.nsf.ModuleClassLoader$DynamicClassLoader.loadClass(ModuleClassLoader.java:403)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:809)
    at ru.lanit.egrz.scheduler.RefreshEGRZTokenExecutor.executeAndScheduleRefreshToken(RefreshEGRZTokenExecutor.java:18)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:508)
    at com.ibm.jscript.types.JavaAccessObject.call(JavaAccessObject.java:322)
    at com.ibm.jscript.types.FBSObject.call(FBSObject.java:161)
    at com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:197)
    at com.ibm.jscript.ASTTree.ASTProgram.interpret(ASTProgram.java:119)
    at com.ibm.jscript.ASTTree.ASTProgram.interpretEx(ASTProgram.java:139)
    at com.ibm.jscript.JSExpression._interpretExpression(JSExpression.java:435)
    at com.ibm.jscript.JSExpression.access$1(JSExpression.java:424)
    at com.ibm.jscript.JSExpression$2.run(JSExpression.java:414)
    at java.security.AccessController.doPrivileged(AccessController.java:686)
    at com.ibm.jscript.JSExpression.interpretExpression(JSExpression.java:410)
    at com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:251)
    at com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:234)
    at com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(JavaScriptInterpreter.java:222)
    at com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(JavaScriptMethodBinding.java:111)
    at com.ibm.xsp.application.ActionListenerImpl.processAction(ActionListenerImpl.java:60)
    at javax.faces.component.UICommand.broadcast(UICommand.java:324)
    at com.ibm.xsp.component.UIEventHandler.broadcast(UIEventHandler.java:366)
    at com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
    at com.ibm.xsp.component.UIViewRootEx.broadcast(UIViewRootEx.java:1535)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:307)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:428)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:94)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
    at com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:256)
    at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:227)
    at com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157)
    at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:159)
    ... 13 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.Plugin
    at com.ibm.domino.xsp.module.nsf.ModuleClassLoader$DynamicClassLoader.loadClass(ModuleClassLoader.java:359)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:809)
    ... 54 more

IBM 一次又一次地让我感到害怕(对此深表歉意)。

我尝试将其添加为外部 jar 部分 -> 仍然相同。

我什至尝试将这两个添加到 lib/ext -> 还是一样。

在构建路径中,这两个作为插件依赖项包含在内。

从字面上看,我认为导入 jar 并解决 Domino 中的依赖关系存在问题(甚至超出了这个特定问题的范围)。

这是我关于 IBM Domino 的第三个问题(如果不是第四个问题)。我真诚地向社区道歉,让我感到尴尬,但请纠正我的错误。在 Domino 中,您解决了一个问题,然后另外两个问题就出现了。你解决了这两个问题,然后其他 4 个问题就破坏了应用程序。等等

如何正确导入而不出现任何问题?

提前致谢

UPD

为了改进我的问题,我将添加一些代码

所以,bean 看起来像这样:

SchedulerActivatorBean:

import java.io.Serializable;

public class SchedulerActivatorBean implements Serializable  {

    /**
     * 
     */
    private static final long serialVersionUID = -3559937702716018697L;

    public static void activate() throws Exception 
    {
        new SchedulerActivator().start(null);
    }

}

SchedulerActivator(OSGI插件):

import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;


public class SchedulerActivator extends Plugin implements BundleActivator {

     @Override
        public void start(final BundleContext context) throws Exception {
         // Here you start your scheduler
         QuartzScheduler.getInstance(); // starts the scheduler
        }

    }

然后我修改了faces-config.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
  <managed-bean>
    <managed-bean-name>schedulerActivatorBean</managed-bean-name>
    <managed-bean-class>ru.lanit.egrz.scheduler.SchedulerActivatorBean</managed-bean-class>
    <managed-bean-scope>application</managed-bean-scope>
  </managed-bean>
</faces-config>

最后我从 SSJS 调用 bean:

 <xp:eventHandler event="onclick" submit="true"
    refreshMode="complete"
    action="#{javascript:schedulerActivatorBean.activate()}">
 </xp:eventHandler>

该 bean 已实例化并可在应用程序中使用。但是当我调用该方法时,我仍然得到:

Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.Plugin
    at com.ibm.domino.xsp.module.nsf.ModuleClassLoader$DynamicClassLoader.loadClass(ModuleClassLoader.java:359)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:809)
    ... 54 more

不用说,这让我一无所知

最佳答案

插件不存在于 NSF 中。您可能想先了解一下。以此作为入门:https://www.slideshare.net/fiorep/domino-osgi-development

您可能想重新审视您的整个方法。为什么不使用已计划并刷新存储在 NSF 中的 token 的 Notes 代理。简单的问题解决了。

然后让您的 XPage 查找 NSF 中的值。省去了你所有的头痛。

对于新用户,您可以使用 XPage 中的 agent.run。诀窍在于 NSF 中的存储。

使用读取器字段来保护文档,以便用户无法看到彼此的 token 。

关于java - 由 : java. lang.ClassNotFoundException : org. eclipse.core.runtime.Plugin 引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59184377/

相关文章:

java - 删除单链表中的重复项保留顺序

log4j - FileAppender 未在 log4j 中写入任何内容

java - LotusNotes View 中的文档数

Notes Client 和 Domino Designer 9.0.1 FP2 IF1 中未安装 Dojo 1.9.4?

Xpages 无法加载,错误 500; java.util 无法解析

java - 怎样才能正确地移动到对角线碰撞盒中并进行对角线移动?

java - 为什么下面的代码中finalize没有给出空指针异常?

java - 将Excel信息添加到JTable中,而不是创建新行? (.xlsx) (JAVA)

java - 有没有办法在 POJO 中访问 SlingRepository?

java - c3p0 循环和 OSGi