Junit:创建BOFactory实例时出现exception

我正在尝试在IID8.5上设置JUnit框架。 但是当我尝试运行简单的JUnit测试用例时,我收到运行时错误。 ( java.lang.NoClassDefFoundError:org.eclipse.core.runtime.RegistryFactory

我正在使用JUnit4。 请查看显示项目结构的附图

**Code in BOUtils.java **

 package com.wf.utils; import com.ibm.websphere.bo.BOFactory; import com.ibm.websphere.sca.ServiceManager; import com.ibm.websphere.sca.Service.*; public class BOUtils { /** * @param args */ public static void createBusinessObject() { System.out.println("Create Business Object"); BOFactory boFactory = (BOFactory) new ServiceManager().locateService("com/ibm/websphere/bo/BOFactory"); } public static void main(String[] args) { // TODO Auto-generated method stub } } **Code in JunitTest.java** package JunitTest; import junit.framework.TestCase; import com.wf.utils.BOUtils; import org.junit.Test; public class JunitTest extends TestCase { @Test public void testPersistCust() { System.out.println("testPersistCust"); BOUtils.createBusinessObject(); } } **Exception Stack Trace** java.lang.NoClassDefFoundError: org.eclipse.core.runtime.RegistryFactory at org.eclipse.core.internal.runtime.InternalPlatform.getRegistry(InternalPlatform.java:671) at org.eclipse.core.runtime.Platform.getExtensionRegistry(Platform.java:867) at com.ibm.wsspi.sca.extensions.ServiceProviderRegistry.loadServiceProviders(ServiceProviderRegistry.java:167) at com.ibm.wsspi.sca.extensions.ServiceProviderRegistry$1.run(ServiceProviderRegistry.java:88) at java.security.AccessController.doPrivileged(AccessController.java:202) at com.ibm.wsspi.sca.extensions.ServiceProviderRegistry.getServiceProviders(ServiceProviderRegistry.java:86) at com.ibm.wsspi.sca.extensions.ServiceProviderRegistry.getServiceProvider(ServiceProviderRegistry.java:101) at com.ibm.ws.sca.resources.loader.ClassLoaderRegistry.(ClassLoaderRegistry.java:59) at java.lang.J9VMInternals.initializeImpl(Native Method) at java.lang.J9VMInternals.initialize(J9VMInternals.java:200) at com.ibm.ws.sca.internal.container.impl.ContainerImpl.(ContainerImpl.java:343) at java.lang.J9VMInternals.initializeImpl(Native Method) at java.lang.J9VMInternals.initialize(J9VMInternals.java:200) at com.ibm.ws.sca.internal.container.impl.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:70) at com.ibm.ws.sca.internal.container.Container.(Container.java:111) at java.lang.J9VMInternals.initializeImpl(Native Method) at java.lang.J9VMInternals.initialize(J9VMInternals.java:200) at com.ibm.ws.sca.internal.manager.impl.ServiceManagerImpl.(ServiceManagerImpl.java:68) at java.lang.J9VMInternals.newInstanceImpl(Native Method) at java.lang.Class.newInstance(Class.java:1325) at com.ibm.websphere.sca.ServiceManager$InstanceCreator.create(ServiceManager.java:53) at com.ibm.websphere.sca.ServiceManager$InstanceCreator.access$000(ServiceManager.java:43) at com.ibm.websphere.sca.ServiceManager.(ServiceManager.java:73) at java.lang.J9VMInternals.initializeImpl(Native Method) at java.lang.J9VMInternals.initialize(J9VMInternals.java:200) at BOUtils.createBusinessObject(BOUtils.java:14) at JunitTest.testPersistCust(JunitTest.java:50) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:599) at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99) at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75) at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45) at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66) at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35) at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.RegistryFactory at java.net.URLClassLoader.findClass(URLClassLoader.java:419) at java.lang.ClassLoader.loadClass(ClassLoader.java:643) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:345) at java.lang.ClassLoader.loadClass(ClassLoader.java:609) ... 47 more 

任何帮助将受到高度赞赏。 如果需要任何附加信息,请与我们联系。

此致,RD

该exception告诉您某个类不可用于您在其中运行的JVM。

简单的答案:然后开始搜索该类……你可以在这里找到它 – 你可以在这里下载各种与eclipse相关的JAR。

因此:尝试将org-eclipse-equinox-registry.jar添加到类路径中会发生什么。

( 这里可能包含对正在发生的事情的解释)