如何编译和运行一个带包名的Java类

3

我有一个叫做MyClass的类,在MyClass.java文件中(下面是代码)

package myclass;

class MyClass {
  public int add (int a, int b){
    return a+b;   
  }

  public static void main(String args[]) {
    MyClass obj = new MyClass();
    System.out.println(oobj.add(2, 3));
  }
}

我正在使用编译器编译这个类

javac MyClass.java

不过我正试图使用以下方法运行该类:

java MyClass

或者

java myclass.MyClass

我遇到了错误。

Error: Could not find or load main class MyClass

但是,如果我省略包名,我就能运行这个程序。 我做错了什么吗?


1
你的类应该是 public 的。 - Uma Kanth
2
这个类似乎一开始就无法编译。请发布您的真实代码。 - Reimeus
请问如何在Java中编译包? - Madhawa Priyashantha
我已将MyClass更改为public,但运行java MyClass -or- java myclass.MyClass会抛出错误。 - isnvi23h4
4个回答

9

请确认你当前位于包文件夹的父目录下(也就是你编译的class文件所在的那个目录),然后执行以下命令:

java myclass.MyClass

以下是一个文件结构示例:
bin
    -> myclass
        -> MyClass.class

在上面的示例结构中,您需要从“bin”目录执行命令。此外,将类定义为public并重新编译Java源文件。

4
我也遇到过这个问题。对于其他语言的人来说,这非常令人沮丧。关键在于,Java文件必须放在正确的目录中,具体取决于包声明。
如果Java文件Test1.java以以下命令开始:
package com.xyz.tests;

然后,Java文件Test1.java需要在目录com/xyz/tests中。

您可以编译和运行如下:

javac com/xyz/tests/Test1.java
java com/xyz/tests/Test1

祝你好运。

0

你需要使用以下命令编译该类:

javac -d ./myclass  

抱歉,那个是错误的。正确的是: - himanshu khemani
javac -d . Myclass.java - himanshu khemani

0

我通过以下方式使我的示例运行:

java <package>.<class>

从包的父目录


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接