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

相关问题