2017-02-15 2 views
1

Ich versuche, das JUnit-Framework auf IID8.5 einzurichten. Aber wenn ich versuche, einen einfachen JUnit-Testfall auszuführen, erhalte ich einen Laufzeitfehler. (java.lang.NoClassDefFoundError: org.eclipse.core.runtime.RegistryFactory)Junit: Ausnahme beim Erstellen der BOFactory-Instanz

ich JUnit4 verwende. Please find attached image showing project structure

**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.<clinit>(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.<clinit>(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.<clinit>(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.<init>(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.<clinit>(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 

Jede Hilfe wird sehr geschätzt. Lassen Sie mich wissen, ob zusätzliche Informationen erforderlich sind.

Grüße, RD

Antwort

0

Diese Ausnahme besagt, dass eine bestimmte Klasse an die JVM nicht zur Verfügung steht Ihnen in dieser ausgeführt werden.

Die einfache Antwort: Dann starten Sie die Suche nach dieser Klasse ... und Sie können diese here finden - wo Sie verschiedene Eclipse bezogene JARs herunterladen können.

Also: versuchen Sie, was passiert, wenn Sie org-eclipse-equinox-registry.jar zu Ihrem Klassenpfad.

(Diese here könnte eine Erklärung enthalten, was los ist)

+0

Dank Zugabe von org-Eclipse-Äquinoktium-registry.jar Dateien zu Projekt (e) Build Path zusammen mit IID Laufzeitumgebung das Problem beheben. –

+0

Freut mich zu hören, dass es so funktioniert hat. Da kann man sich nicht sicher sein, da diese Eclipse-Framework-Dinge auch andere Abhängigkeiten haben könnten. – GhostCat

Verwandte Themen