【问题标题】:java class executing on Eclipse but not in command linejava 类在 Eclipse 上执行但不在命令行中
【发布时间】:2018-04-25 14:33:18
【问题描述】:

我的 java 类文件在 Eclipse 中运行,但不在命令行中。我已经尝试了所有可能的解决方案。我的代码结构如下:

Client_1/src/filedownload/Client.java

RMI_interface/src/filedownload/Hello.java

Client.java 文件依赖于Hello.javafiledownload 是包的名称。 当我使用以下命令编译时,它可以工作。

javac RMI_interface/src/filedownload/Hello.java Client_1/src/filedownload/Client.java

但是当我使用以下命令执行Client_1/src文件夹中的类文件时,它不起作用。

java filedownload.Client

显示的错误是

Could not find or load main class

我在 stackoverflow 上尝试了很多帖子,但我无法解决它。我正在使用 ubuntu。

代码结构是

package filedownload;
import ....
public class Client implements Hello, Runnable{
...other functions.....
public static void main(String args[])throws Exception{

}
}

【问题讨论】:

标签: java executable javac


【解决方案1】:

您的 Client 类是否有 main() 方法?编译后的 .class 文件在哪里(也就是说,您正在执行编译的当前目录是什么)?当您尝试执行时,当前目录是什么?尝试执行时的类路径是什么?

没有所有这些信息,任何人都无法让您继续前进(但对于仅设置 eclipse 并在 eclipse 中执行所有操作的明显建议 - 让 eclipse 处理所有细节)。

(而且问题本身暗示了您的场景中可能出现的各种故障点,所以看看。)

【讨论】:

  • 我的 Client 类有一个 main()。我正在从 Client_1/src 文件夹执行。类文件位于 Client_1/src/filedownload 和 RMI_interface/src/filedownload。我正在使用来自 Client/src 文件夹的以下命令:java filedownload.C​​lient.
  • 来自 Oracle 文档:“类路径的默认值为“.”,表示仅搜索当前目录。指定 CLASSPATH 变量或 -cp 命令行开关会覆盖此值。 "注意“覆盖此值”。通过在终端中尝试“echo $CLASSPATH”来检查您是否设置了 CLASSPATH 变量。
【解决方案2】:

您的所有步骤似乎都是正确的。您没有共享具有main 方法的Client.java 代码。 确保遵循main 方法语法:

public static void main(String[] args){
  ...
}

例如如果你写main而不写args,就找不到了。

【讨论】:

  • 我的主要方法有args。
  • 您必须分享一些代码伙伴,以便我们更好地帮助您。
  • 你在Client类中覆盖run方法吗?
  • OK 删除 Runnable 作为接口。没有必要。然后删除,重新编译,再次运行。
  • 我正在使用 run() 函数,但我的意思是我没有在 run() 函数之上提供@Override。
【解决方案3】:

您需要将您的课程放在一个单独的文件夹中,与您的来源分开。

javac -d bin RMI_interface/src/filedownload/Hello.java Client_1/src/filedownload/Client.java

(文件夹“bin”必须已经存在) 并在文件夹'bin'内执行命令:

java filedownload.Client

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2015-07-01
    相关资源
    最近更新 更多