gpt4 book ai didi

java - java包与目录或文件夹的概念不同吗?如果是的话怎么办?

转载 作者:行者123 更新时间:2023-12-02 13:07:22 30 4
gpt4 key购买 nike

我通过编写代码创建了一个类:

pacakge packtst;
public class Class1
{
public static void main(String args[])
{
System.out.print("This is class1");
}
}

然后我编译了程序

javac -d . Class1.java

它在我的当前目录中创建了一个子目录,名为 packtst。然后我进入 packtst 目录。在其中我创建了另一个类:

public class Class2
{
public static void main(String args[])
{
System.out.print("this is class2");
}
}

并编译到packtst目录下

javac Class2.java

所以,现在在包 packtst 中我有两个类文件 Class1.class 和 Class2.class现在我尝试从目录外部运行 Class1:

java packtst.Class1

运行良好。但后来我尝试从同一目录运行 Class2:

java packtst.Class2

它说无法找到或加载主类 packtst.Class2
为什么?

最佳答案

I have a created a class by writing code as:

pacakge packtst;
public class Class1

Then i compiled the program by

javac -d . Class1.java

这是你的前两个错误。 .java 文件应该位于相对于您开始位置的 packtst 目录中,并且您应该通过以下方式编译它:

javac packtst/Class1.java

Then I went into the packtst deirectory.

这是你的第二个错误。你应该留在原来的地方。

Within it i made another class as:

public class Class2

这是你的第三个错误。由于 Class2 没有 package 语句,因此它应该位于您启动的目录中。

And compiled it in the packtst directory by

javac Class2.java

这是你的第四个错误。 javac 命令行是正确的,但它应该是从您启动的目录发出的,即包含 packtst 目录的目录。

So, now in the package packtst i have two class file Class1.class and Class2.class

这是你的第五个错误。您开始的目录现在应该包含:

packtest/Class1.class
Class2.class

Now I try to run Class1 from outside of the directory by

java packtst.Class1

It ran well.

所以您现在一定已经位于您开始所在的目录中。

But then I tried to run Class2 from the same directory:

java packtst.Class2

这是你的第六个错误。 Class2 不在 packtst ,因为它的源代码不包含这样的声明。命令应该是:

java Class2

It said couldn't find or load main class packtst.Class2

正确。

Why?

因为不存在这样的类。Class2(包括其所有声明的包)的完全限定名称是Class2

关于java - java包与目录或文件夹的概念不同吗?如果是的话怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44093999/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com