【问题标题】:Very first hello world java program works in Eclipse but not in command prompt第一个 hello world java 程序可以在 Eclipse 中运行,但不能在命令提示符下运行
【发布时间】:2020-01-24 05:20:23
【问题描述】:

我知道这个问题之前已经回答过,但作为一个尝试开始学习 Java 的新手,我会很感激你的具体答案?

在 Eclipse 中,当我使用以下代码按运行时,它可以正常工作

public class MySweetProgram {

    public static void main(String[] args) {
        System.out.println("Hello there!");

    }


}

但是,当我在命令提示符下转到 C:\Program Files (x86)\Java\jre1.8.0_241\bin 并键入 java MySweetProgram 时,我收到一条错误消息,提示无法加载或找到主类 MySweetProgram

我搜索了其他建议设置类路径的线程。我的设置为 C:\Program Files (x86)\Java\jre1.8.0_241\lib。 我将 Classpath 中的文件夹从 lib 更改为 bin 但得到了同样的错误,所以我再次将其改回来

我做了一个 java -version 并得到以下内容:

java 版本“1.8.0_241” Java(TM) SE 运行时环境 (build 1.8.0_241-b07) Java HotSpot(TM) 客户端虚拟机(内部版本 25.241-b07,混合模式)

有人可以就他们认为可能存在的问题给我建议吗? 如果这是一个无知的问题,我深表歉意 谢谢 吉米

【问题讨论】:

  • 这取决于MySweetProgram 存储在哪个“包”中。但是,您应该从项目根包上方的目录开始,并使用javac path/to/class/MySweetProgram.java 来确保它已编译。然后你可以使用java path.to.class.MySweetProgram 来运行它
  • 不,它在我的 C:\Users****\eclipse-workspace\Hello\bin 文件夹中。但是当我从那里运行相同的命令时,我得到了同样的错误
  • @MadProgrammer 这是有史以来的第一堂课。我希望它是默认包。
  • 是的,它在 SRC 文件夹中被称为“deafult package”
  • @JimmyJ 将目录更改为src 文件夹(在里面),然后简单地使用javac MySweetProgram.java 编译它并java MySweetProgram 运行它——我已经很久没有做任何CLI了跨度>

标签: java


【解决方案1】:

欢迎! Eclipse 将为您编译代码然后运行它。当您单击运行时,它会为您完成这一切,让您作为开发人员的生活更加轻松。如果您想从命令行编译和运行命令,您需要确保您可以访问 jdk(它必须由 Eclipse 安装在某个地方,但可能不会立即明显地安装在哪里......一个名为 /something 的文件夹/jdk/,大概)。在路径上(在 %PATH% 变量中),以下内容应该适合您:

cd /to/where/your/code/is
javac MySweetProgram.java
java -cp . MySweetProgram

了解编译及其含义,以便更好地了解 Eclipse 正在做什么。祝你好运!

【讨论】:

  • 您好,感谢您的回复。运行 java -cp 。 MySweetProgram 现在给出此错误: C:\Users\a\eclipse-workspace\Hello\src>java -cp 。 MySweetProgram 错误:发生 JNI 错误,请检查您的安装并重试 线程“main”中的异常 java.lang.UnsupportedClassVersionError:MySweetProgram 已由 Java 运行时的更新版本(类文件版本 57.0)编译,此版本Java Runtime 仅识别最高 52.0 的类文件版本
  • 您的 javac 版本比您路径上的 java 版本更新。您使用的 jdk 应该有一个java.exe。请明确使用此较新版本,然后重试。祝你好运!
【解决方案2】:

当您编译@​​987654322@ 文件时,在您的情况下为MySweetProgram.java,您可以决定您希望可执行文件的位置。该文件将被称为MySweetProgram.class。 Eclipse 可能会将这两个文件保存在不同的目录中。

通常(在 Java11 之前)您只能运行 .class 文件。因此,您必须为 java 添加 classpath (-cp) 参数才能找到您的文件:

java -cp path MySweetProgram   (don't put the .class)

现在(在 Java11 之后)你可以直接运行 java 文件,因为当你给它一个 .java 文件时,它会在执行之前为你编译它:

java MySweetProgram.java       (if you're in the directory)
java path\MySweetProgram.java

如果目录中有 MySweetProgram.class,则会报错。

当你使用包时它会变得有点复杂,但是 Oracle 有一些非常好的Offical Java Tutorials

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 2019-02-04
    相关资源
    最近更新 更多