从命令行在包中运行 java

2022-09-01 02:56:19

我已经阅读了之前发布的问题。有些含糊不清,没有一个解决了我的问题,所以我被迫再次询问。

我有两个简单的类,

package One;
import One.Inner.MyFrame;
public class test
{
    public static void main(String args[])
    {
        MyFrame f= new MyFrame();
    }
}

另一类是,

package One.Inner;
import java.awt.*;
import javax.swing.*;

public class MyFrame extends JFrame
{
    public MyFrame()
    {
        setPreferredSize(new Dimension(400,560));
        setVisible(true);
    }
}

我在Windows cmd中的基本文件夹“基本”。我编译使用

basic> javac *.java -d .

将创建一个文件夹和子文件夹。

cd One
basic\One> java test

这会产生大量错误。许多答案被指示指定不起作用的完整路径。我的类位于 One 中,因此使用 -cp 指定 One 也不起作用。


答案 1

您将它运行为:

java One.Test

...而是来自目录 (),而不是来自目录。始终指定完全限定的类名。basicOne

哦,Java中的包名称应该是小写的,所以它应该是和,而不是和。只是一个惯例,但几乎每个人都遵循。oneone.innerOneOne.Inner


答案 2

如果目录是:

basic\One

从软件包的基目录运行 java:

basic>java One.test or basic>One.test <optional arguments>

(理想情况下,包应为小写,类为大写):

basic>java one.Test

如果收到“不存在”消息,则 java 命令找不到在类中引用的类。您可以使用 -cp 选项指向它们(“.”表示“这里”,您可以在 Windows 上添加任意数量除以 “;” 的位置,在 Linux 上除以 “:”)。

basic>java -cp . one.Test
or
basic>java -cp .;..\..\someJar.jar;c:\someDirectory\classesDirectory  one.Test

推荐