【问题标题】:OS X, can't run create .class files. Error: Could not find or load main classOS X,无法运行创建 .class 文件。错误:无法找到或加载主类
【发布时间】:2014-08-21 06:18:43
【问题描述】:

以下文件名为HelloWorldApp.java,并保存在桌面上

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello Joe!"); // Display the string.
    }
}

我使用javac /Users/joe/Desktop/HelloWorldApp.java从终端编译它 然后我尝试使用java /Users/joe/Desktop/HelloWorldApp 运行它,我得到了错误Error: Could not find or load main class。我尝试以.class 为结尾重新运行命令。没运气。我尝试将 sers/joe/Desktop/HelloWorldApp.class 添加到 PATH 变量中,但没有成功。

怎么了?我正在使用 OS X 10.9.4 并且可以在 Netbeans 中正常运行 Java 程序。

【问题讨论】:

标签: java macos


【解决方案1】:

您需要使用特定的命令行从正确的目录调用 java:

cd /Users/joe/Desktop/
java HelloWorldApp

我强烈建议使用 IDE,例如 Eclipse,因为它隐藏了在命令行上构建和运行的复杂性(尤其是使用类路径/库),并让您专注于代码本身。

【讨论】:

    【解决方案2】:

    java 命令需要类的完全限定名。对应的.class 文件必须在类路径中。

    如果你的类不在任何包中,

    java HelloWorldApp 
    

    假设HelloWorldApp.class 在当前工作目录中,就可以解决问题。

    如果你的课程在某个包中,

    java -cp /the-classpath-root com.example.HelloWorldApp
    

    假设HelloWorldApp.class/the-classpath-root/com/example 中就可以了。

    【讨论】:

    • /the-classpath-root com.example.的信息从何而来?
    • @cele 这将是您的.class 文件所在的目录,嵌套在代表其包层次结构的目录中。它也可以是.jar 文件。
    • 是否总是以com 开头?例如,如果源代码有 package abc; 会是什么?
    • @Celeritas 这只是一个例子。在这种情况下,它将是abc
    • @Celeritas java 类TestRent 被声明在包guide 中?如果是这样,那么它不应该在您刚刚告诉我们的位置。它应该在../classes/guide/TestRent.class 中,你应该运行java -cp <wtv>/classes guide.TestRent
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多