简体   繁体   English

Eclipse项目中的类的ClassNotFoundException

[英]ClassNotFoundException for class in Eclipse project

I have a program that calls a third party API (proprietary, so I don't have access to the source). 我有一个调用第三方API的程序(专有,因此我无权访问源代码)。 During the call to this API, I get a ClassNotFoundException for a class that's in the src folder of my Eclipse project. 在调用此API的过程中,我为Eclipse项目的src文件夹中的类获取ClassNotFoundException I haven't done anything funky with how classes are loaded--the whole src folder is included in the classes that are loaded. 对于类的加载方式,我还没有做任何时髦的事情-整个src文件夹包含在加载的类中。 I've tried multiple steps to figure out why I'm getting this ClassNotFoundException including: 我尝试了多个步骤来弄清楚为什么我得到这个ClassNotFoundException包括:

  • changing the name of the class (using the refactor functionality in Eclipse) 更改类的名称(使用Eclipse中的重构功能)
  • moving the class to the same package as the class that calls the API 将类移至与调用API的类相同的包中
  • compiling my project into a jar and adding the jar to the classpath 将我的项目编译到jar中,然后将jar添加到类路径中
  • putting the jar on the classpath of server that will eventually finish the work (looks like it's handed off via RMI) 将jar放在服务器的类路径上,最终将完成工作(看起来像是通过RMI传递的)

The code goes something like this: 该代码是这样的:

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

It's within the importAsset method that I get the ClassNotFoundException . 我在importAsset方法中获得ClassNotFoundException Here's the relevant stack trace: 这是相关的堆栈跟踪:

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)

Please excuse any typos, I had to type that out myself. 请原谅任何错别字,我必须自己输入。

看起来您的第三方类依赖于其他jar,这就是您能够导入它的原因,但是当您调用它的给定异常时。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM