【问题标题】:How to run several class files in cmd? [duplicate]如何在cmd中运行几个class文件? [复制]
【发布时间】:2019-08-08 04:11:08
【问题描述】:
package emailapp;
import java.util.Scanner;

public class Email {

    private String firstName;
    private String lastName;
    private String department;
    private String password;
    private String alternativeEmail;
    private int mailboxCapacity = 200;
    private String email;
    private String companyName = "HomeCo.com";

    public Email(String firstName, String lastName){
        this.firstName = firstName;
        this.lastName = lastName;
        //System.out.println("Email Created!:" + this.firstName + " " + this.lastName + " ");

    this.department = setDepartment();
    //System.out.println("Your Email Department: "+ this.department);
    this.password = setPassword(8);
    //System.out.println("Your Password Is: "+ this.password);
    email = firstName.toLowerCase() + "." +  lastName.toLowerCase() + "@" + department + "." + companyName;
    //System.out.println("Your Email Address Is: "+ email);
    }



    private String setDepartment() {

        System.out.print("CHOICES:\n1.Sales\n2.Development\n3.Accounting\n4.None Of The Above\n");
        Scanner Input = new Scanner(System.in);
        int choice = Input.nextInt();

        if(choice == 1) {
            return "sales";
        }
        else if(choice == 2) {
            return "dev";
        }
        else if(choice == 3){
            return "acct";
        }
        else {
            return " ";
        }
    }

package emailapp;
public class EmailApp {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Email em1 = new Email("Rojin","Ebrahimi");
        System.out.println(em1.showInfo());
    }

}

我编写了一个使用 2 个类的迷你电子邮件生成应用程序: 一个名为“Email”的类和另一个名为“EmailApp”的类(包括主类)。它是用 Eclipse 编写的,我正在尝试在 cmd 中运行我的代码,但我很困惑如何首先编译它。

当我输入时:

javac EmailApp.java,

它一直告诉我这个:

Email 类是公共的,应该在一个名为 Email.java 的文件中声明

这些类位于一个名为“emailapp”的包中。

【问题讨论】:

  • 除了公共类 X 需要存在于 X.java 中这一事实之外……您的源代码树结构也必须反映您的包结构。在您的情况下,这意味着您有 两个 java 文件位于名为 emailapp 的目录中。然后你会做javac emailapp/*.java 例如。
  • 记录一下。请确保所有您的源代码格式正确且缩进。
  • 这一切都可以在 Eclipse 中运行!我只是不知道如何从 cmd 运行它,我得到了错误。我尝试了您建议的解决方案,但仍然无法正常工作。
  • 请阅读“如何创建minimal reproducible example”。然后使用edit 链接改进您的问题(不要通过 cmets 添加更多信息)。否则我们无法回答您的问题并为您提供帮助。换句话说:将您的输入减少到两个(可能几乎是空的类,就足够了,它应该可以正常编译)。然后描述您的项目设置(源代码位置、目录名称)和您正在使用的确切命令。正如我刚刚告诉你的:javac X.java 是错误。

标签: java class cmd compilation package


【解决方案1】:

该错误意味着您的文件名和类名具有不同的名称。 您应该为每个类保留一个单独的文件,并确保每个文件与其包含的类具有相同的名称。

例如: 文件:EmailApp.java 包含:public class EmailApp { ... }

文件:Email.java 包含:public class Email { ... }

现在,当您使用 main 方法编译类时,它也会编译其他类 - 假设 EmailApp 调用 Email。 main 方法应该是这样的:

public static void main(String... args) {
 // 
}

因此,您只编译 EmailApp.java。

无论如何,请提供您正在处理的文件..

【讨论】:

  • 感谢您的回答,但我仍然遇到错误。实际上,Email 类是通过编译构建的,但它告诉我:无法找到或加载主类 EmailApp。有没有其他方法可以解决这个问题?
  • 现在,你编译的类,必须有main方法。例如错误。您需要 public static void main 的唯一原因是:当您想要运行该类时。编译一个类,不需要main方法。
  • @GhostCat,正确!我已经修改并解释了自己。我的意思是,用 main 编译类就足够了,不需要单独编译其他类......那么它应该运行正常,假设他正确编写了调用(即 EmailApp 与 main 调用电子邮件......)
  • 它在 Eclipse 中工作,我尝试了不同的方法但没有用。
  • 谢谢大家终于成功了!!
【解决方案2】:

嗯,你需要完全按照这个错误告诉你的去做。在 Java 中,每个公共类(内部类除外)都需要有自己的文件。

您可能已将这两个类的代码放在一个名为 EmailApp.java 的文件中。但是您需要将 Email 类的所有代码放在一个名为 Email.java 的单独文件中。

完成此操作后,您可以使用以下命令在命令行中编译这两个文件:

javac EmailApp.java
javac Email.java

然后你运行你放置主函数的类(可能是 EmailApp.java 文件:

java EmailApp

评论后更新:
您确定 cmd 在正确的目录中吗?在文件资源管理器中,搜索源文件所在的目录。您应该能够从文件资源管理器的地址栏中复制路径。在 cmd 中,您应该使用 cd 命令执行目录更改:

cd "put the path to the right directory in here"

注意:如果路径中有空格,请确保将路径放在引号内。

【讨论】:

  • 谢谢,但它一直告诉我这个错误:找不到或加载主类 EmailApp。此外,当我第一次编译 EmailApp 时,它提到了一些错误,但我一直在“javac EmailApp.java”之后输入“javac Email.java”
  • 更新对您有帮助吗?
  • 你能把代码提供给我们吗?
  • 是的,我检查过了,路径是正确的......
  • 不是每一堂课。每个 public 类。您可以在同一个 .java 文件中轻松拥有 10 个非公共 Java 类。
猜你喜欢
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 2015-05-01
  • 2021-09-08
  • 2021-12-09
  • 2011-08-11
相关资源
最近更新 更多