找不到rmic错误类

时间:2012-09-09 03:08:47

标签: java rmi

我正在首先阅读java,我即将尝试使用现成的烘焙代码来展示如何使用RMI。 这些是类:

远程接口

import java.rmi.*;

public interface MyRemote extends Remote {

    public String sayHello() throws RemoteException;
}

远程实现

import java.rmi.*;
import java.rmi.server.*;

public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote {

    public String sayHello() {
        return "Server Says,Hello";
    }

    public MyRemoteImpl() throws RemoteException { }

    public static void main(String[] args) {

        try {
            MyRemote service = new MyRemoteImpl();
            Naming.rebind("Remote Hello", service);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

然后我将.java和.class文件放在c:\ RMI中。在运行它时,它表示即使我从同一目录运行,也找不到MyRemoteImpl类。我怎样才能解决这个问题?感谢。

编辑:当我尝试运行此命令时出现错误

rmic MyRemoteImpl

8 个答案:

答案 0 :(得分:1)

BuddingProgrammer的评论也适用于我。

例如,如果您的类位于文件夹C:\ users \ renato \ workspace \ ADI \ src \ semana5中,您应该转到上面的一个级别: C:\ users \ renato \ workspace \ ADI \ src你应该像这样编译:javac semana5 \ Calculadora.java

要运行RMI,您应在C:\users\renato\workspace\ADI\src中输入以下命令:

 rmic semana5.CalculadoraImp

答案 1 :(得分:0)

如果您没有从包含.class文件的目录运行此命令,那么您应该假设根据您发布的内容没有包语句。如果有一个package语句,则应该从包含最高级别包的目录中运行此命令。

否则您的CLASSPATH环境变量有问题。它应该至少包含“。”,也可能是其他一些东西。作为一种解决方法,你可以采用Isaac的建议,但是当你编译和执行时,你只会遇到同样的问题。

答案 2 :(得分:0)

  1. 创建文件夹名称HelloServer
  2. 在每个班级package HelloServer;MyRemote的顶部添加此包MyRemoteImpl
  3. 打开cmd并从包含javac HelloServer/MyRemote.java文件夹的目录中写入javac HelloServer/MyRemoteImpl.javaHelloServer
  4. 从包含rmic HelloServer.MyRemoteImpl文件夹的目录中写HelloServer
  5. 你现在应该有一个MyRemoteImpl_stub.class,你可以度过美好的一天:)
  6. PS:包名称与RMI或类中使用的任何对象不同是很重要的。否则你会发生物体碰撞。

答案 3 :(得分:0)

由于我遇到了同样的问题而且这些答案都没有帮助我,我会添加对我有用的东西。我在包含MyRemoteImpl.java的目录中运行rmic MyRemoteImpl并得到了同样的错误。当我在包含MyRemoteImpl.class的目录中运行rmic MyRemoteImpl时,它工作并创建了MyRemoteImpl_Stub.class。我不需要设置CLASSPATH。

答案 4 :(得分:0)

如果该类位于C:/../ src / Assign / implement.class那么

  1. 输入以下命令更改cmd中的目录: - cd C:/....../ src
  2. 运行命令: - rmic Assign.implement.class
  3. 它对我有用

答案 5 :(得分:0)

我有相同的代码,但是在Maven项目中。第一步是使用mvn compile编译所有代码。请注意,所有已编译的类(在本例中为MyRemoteImpl)都存储在maven项目的目标文件夹中。

下一步是转到cd to \target\classes文件夹。

最后,使用目标类的标准名称(即类的软件包-rmic my_package1.my_sub_package.MyRemoteImpl)运行rmic命令。

答案 6 :(得分:0)

我知道我已经晚了大约 8 年,但对于将来可能遇到同样问题的其他任何人,以下对我有用:

在包含您的文件的文件夹中,首先从 javac *.java 开始,然后继续执行 rmic class_name 步骤。这应该会生成存根。

答案 7 :(得分:-1)

尝试添加:

-classpath .

默认情况下,rmic的类路径是从CLASSPATH环境变量派生的(感谢EJP进行更正)。