Java找不到.class文件或类
我有一个目录结构,因此:Java找不到.class文件或类,java,classpath,Java,Classpath,我有一个目录结构,因此: project/ src/ videoserver/ *.java storeclient/ *.java bin/ videoserver/ *.class storeclient/ *.clas
project/
src/
videoserver/
*.java
storeclient/
*.java
bin/
videoserver/
*.class
storeclient/
*.class
我当前的工作目录是project/src/
,我正在使用命令java-cp../bin/“videoserver.Main
在我看来这一切都是对的,但是Java告诉我它找不到类IVideoServer
。我可以在正确的文件夹中看到IVideoServer.class
,它似乎可以找到Main
类
是什么原因导致Java无法找到IVideoServer
?
导致问题的方法是这个
public static void main(String[] args)
{
try
{
VideoServer Server = new VideoServer();
videoserver.IVideoServer stub = (IVideoServer)UnicastRemoteObject.exportObject(Server, 0);
// Bind the remote object's stub in the registry
Registry registry = LocateRegistry.getRegistry("server-url", 9090);
registry.bind("VideoServer", stub);
System.err.println("Server ready");
}
catch (Exception e)
{
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
我已经编译了与javac
相关的所有类
这是返回给我的完整异常和堆栈跟踪 服务器异常:java.rmi.ServerException:服务器线程中发生RemoteException;嵌套异常是:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: videoserver.IVideoServer
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: videoserver.IVideoServer
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:396)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359)
at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
at videoserver.Main.main(Main.java:17)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: videoserver.IVideoServer
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: videoserver.IVideoServer
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at sun.rmi.server.LoaderHandler.loadProxyInterfaces(LoaderHandler.java:711)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:655)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:592)
at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:628)
at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294)
at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:238)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1530)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1492)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
... 12 more
在src文件夹中,您是否尝试过
java-cp。videoserver.Main
试试这个,
javap videoserver.Main
。。没有光线检测机制(例如眼睛)?请向我们展示你的代码,特别是Java抱怨的那一行。是否存在导入问题?您所说的Java是哪个单词,它找不到类?无论如何,它是一个糟糕的项目结构,*。Java应该转到目标文件夹是的,Java抛出了好的旧ClassNotFound
异常。我会更新我的原始帖子。确保bin在类路径中,然后尝试这个,javap videoserver.Main这给了我从“Main.java”编译的,类签名,构造函数签名和主签名。这是预期的输出吗?是的,这意味着可以找到.class。您能否提供完整的ClassNotFound异常。。。可能只是不在类路径中的VideoServer。我已将异常和堆栈跟踪添加到我的原始帖子中,因为它对于注释来说太长了。好的,看起来好像缺少jar或包含VideoServer.IVideoServer的jar集。检查你的类路径