【问题标题】:Running a basic RMI cleint server from command line从命令行运行基本的 RMI 客户端服务器
【发布时间】:2023-10-14 23:29:01
【问题描述】:

我是 Java 新手,希望有人能帮助我解决这个问题。

我在eclipse中建立了一个项目;并拥有三个包:Client、Interfaces 和 Server。

当我将服务器作为 java 应用程序(通过 eclipse)运行时,它可以正常启动。如果我通过 Eclipse 将客户端作为 java 应用程序运行,结果完全符合我的预期。

我现在正试图通过命令行运行它们。首先,我创建了一个 jar,其中包含我所有的 Interfaces *.class 文件

我现在正在编译Server.java文件,但是说包接口不存在。

所以目前我有:

src/Interfaces
       |--inter1.java
       |--inter2.java
       |--inter1.class
       |--inter2.class
       |--inter12.jar 
             |--inter1.class
             |--inter2.class
src/Server
      |-myServer.java
      |-fileThat'myServer.java'dependson.java
src/Client
      |-myClient.java 

在 myServer.java 我有例如:

 package Server
 ...
 import Interfaces.inter1;

看来我正在破坏试图运行它的包结构;到目前为止,我已经尝试了几件事,包括

java -cp ../Interfaces/inter12.jar: myServer.java

在线程“main”java.lang.NoClassDefFoundError: myServer/java 中抛出“异常”

感谢任何帮助,我承认我在这里有点迷失,我读得越多,我就越困惑。

编辑: 我无法编译 myServer.java;在运行“javac myServer.java”时,我得到:

myServer.java:8: package Interfaces does not exist
           import Interfaces.inter1;

【问题讨论】:

    标签: java eclipse command-line rmi javac


    【解决方案1】:

    运行编译后的类而不是源文件。

    还要考虑到,在使用 java -cp 时,您需要提供完全限定的主类名称,例如

    java -cp com.mycompany.MyMain
    

    要编译服务器类,请尝试以下操作:

    How to include jar files with java file and compile in command prompt

    或者..你为什么不将所有的类从 eclipse 导出为一个 jar 文件呢? (你对接口做了同样的事情)

    运行服务器类时,您必须将接口 jar 添加到运行类路径。见:How to run a java class with a jar in the classpath?

    类似:

    java -cp interfaces.jar;. server.MyServer
    

    【讨论】:

    • 我在命令行上创建了 jar 文件....我仍然遇到同样的错误,但感谢您的帮助
    • 您第二次在这里正确输入了命令行,但不是第一次。
    • 我仍然遇到同样的错误:包接口不存在...我已经尝试了带有接口目录(以及其中的两个类文件)的 jar 文件和只有类的 jar 文件文件),但似乎都不起作用
    • 你实际使用了什么命令?您是否使用了自己的 jar、包和类名称?错误是什么?