2015-09-16 65 views
0

我有一個程序調用第三方API(專有的,所以我沒有訪問源)。在調用這個API的過程中,我得到了一個ClassNotFoundException,這個類位於我的Eclipse項目的src文件夾中。我沒有做過任何關於如何加載類的時髦 - 整個src文件夾包含在加載的類中。我已經試過多個步驟弄清楚爲什麼我得到這個ClassNotFoundException包括:對於Eclipse項目中的類,ClassNotFoundException

  • 改變類的名稱(使用Eclipse中的重構功能)
  • 類移動到相同的封裝類調用API
  • 編譯我的項目,裝入瓶內,加入的jar到classpath
  • 把罐子上服務器的類路徑,將最終完成這項工作(看起來像它通過RMI移交)

的代碼是這樣的:

public Class DoStuff 
{ 
    ... [stuff] 
    Asset asset = new Asset(); 
    asset.setABunchOfInformation(); 
    asset.getReadyForImport(); 
    Asset result = importService.importAsset(asset, importJobInformation); 
    ... [more stuff] 
} 

這是importAsset的方法,我得到ClassNotFoundException內。下面是相關的堆棧跟蹤:

BaseException 
... 
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.myCompany.product.assets.Asset 
    at org.jboss.aop.joinpoint.MethodInvocation.getArguments(MethodInvocation.java:318) 
    at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:355) 
    at org.jboss.ejb3.session.InvokeableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53) 
    at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91) 
    at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82) 
    at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:967) 
    at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:791) 
    at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:744) 
    at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:586) 
    at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:234) 
Caused by: java.lang.ClassNotFoundException: com.myCompany.product.assets.Asset 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.rmi.server.LoaderHandler$Loader.loadClass(LoaderHandler.java:1206) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:274) 
    at sun.rmi.server.LoaderHandler.loadClassforName(LoaderHandler.java:1219) 
    at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:452) 
    at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:185) 
    at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:637) 
    at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:264) 
    at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:214) 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
    at java.util.ArrayList.readObject(ArrayList.java:771) 
    at sun.reflect.GeneratedMethodAccessor771.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjecTInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
    at java.rmi.MarshalledObject.get(MarshalledObject.java:159) 
    at org.jboss.aop.joinpoint.MethodInvocation.getArguments(MethodInvocation.java:309) 
    at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:355) 
    at org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53) 
    at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91) 
    at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82) 
    at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:967) 
    at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:791) 
    at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:744) 
    at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:586) 
    at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:234) 
    at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:218) 
    at org.jboss.remoting.Client.invoke(Client.java:2084) 
    at org.jboss.remoting.Client.invoke(Client.java:879) 
    at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:60) 
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
    at org.jboss.aspects.remoting.ClusterChooserInterceptor.invoke(ClusterChooserInterceptor.java:122) 
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
    at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61) 
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
    at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65) 
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
    at org.jboss.ejb3.remoting.ClusteredIsLocalInterceptor.invoke(ClusteredIsLocalInterceptor.java:54) 
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
    at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62) 
    at com.sun.proxy.$Proxy4.invoke(Unknown Source) 
    at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHAndlerBase.java:188) 
    at com.sun.proxy.$Proxy34.retrieveProcessDefinitionByName(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.commons.beanutils.MethodUtils.invokeExactMethod(MethodUtils.java:403) 
    at com.thirdparty.common.services.BaseServices.executeEjbMethod(BaseServices.java:199) 
    at com.thirdparty.bpm.services.BusinessProcessServices.executeBPMEjbMethod(BusinessProcessServices.java:689) 
    at com.thirdparty.bpm.services.BusinessProcessServices.retrieveProcessDefinitionByName(BusinessProcessServices.java:168) 
    at com.myCompany.product.assets.services.ImportServices.submitImportJob(ImportServices.java:2386) 
    at com.myCompany.product.assets.services.ImportServices.submitImportJob(ImportServices.java:2348) 
    at com.myCompany.product.assets.services.ImportServices.importAssets(ImportServices.java:1145) 
    at com.myCompany.product.assets.services.ImportServices.importAsset(ImportServices.java:1092) 
    at com.myCompany.product.stuff.DoStuff.doWork(DoStuff.java:243) 
    ... (irrelevant trace) 

請原諒任何錯字,我不得不鍵入了自己。

+0

當您在eclipse中導入Asset類時,是否收到任何異常? –

+0

資產類別是該項目的一部分。 com.myCompany.product.assets.Asset – sfedak

+0

如果我沒有錯com.myCompany.product.assets.Asset是由第三方提供的,你只有它的類而不是Java文件是否正確? –

回答

-1

看起來你的第三方類依賴於其他罐子,這就是你能夠導入它的原因,但是當你打電話給它的例外。

+0

那麼如何確定哪個依賴項具有依賴關係?堆棧跟蹤看起來並不特定。 – sfedak

+0

它看起來像第三方的東西*不*有*訪問*這個*罐子。 – EJP

相關問題