Java 在同一个包中创建类的对象

Java 在同一个包中创建类的对象,java,package,access-specifier,Java,Package,Access Specifier,我创建了一个HT17类 package useFul; class HT17 { void show() { System.out.println("Hello World!"); } } 我试着从同一个包的另一个类访问它 package useFul; class HT18 { public static void main(String[] args) { HT17 h =new HT17();

我创建了一个HT17类

package useFul;
class HT17 
{
    void show() 
    {
        System.out.println("Hello World!");
    }
}
我试着从同一个包的另一个类访问它

package useFul;
class HT18
{
    public static void main(String[] args) 
    {
        HT17 h =new HT17();
        h.show();
    }
}
但我得到了一个错误:找不到符号HT17 是的,它们在同一个目录中,即有用
一个解决方案会很有帮助

很可能您正在使用
javac
这将在同一文件夹中创建类文件,即使您定义了一个包

因此,您必须使用
javac-d.
选项,这将为类创建适当的文件夹结构。尝试以下方法

$ javac HT17.java -d .
$ javac HT18.java -d .
$ java useFul.HT18

-d
用于说明在何处使用包创建具有适当文件夹结构的编译类。在示例中,使用
表示使用当前目录。

最有可能使用的是
javac
,这将在同一文件夹中创建类文件,即使您定义了包

因此,您必须使用
javac-d.
选项,这将为类创建适当的文件夹结构。尝试以下方法

$ javac HT17.java -d .
$ javac HT18.java -d .
$ java useFul.HT18

-d
用于说明在何处使用包创建具有适当文件夹结构的编译类。在示例中,使用了
,表示使用当前目录。

首先创建一个名为“有用”的文件夹,并将类复制到其中,然后使用cmd编译并运行。cmd命令:

 javac useFul/HT18.java
 java useFul/HT18

首先创建一个名为“有用”的文件夹,并将类复制到其中,然后使用cmd编译并运行。cmd命令:

 javac useFul/HT18.java
 java useFul/HT18

是否确实编译了这两个类?具有相同的包名和作为相同的包并不总是相同的。你能展示你的项目树吗?另外:您确定在尝试运行HT18之前编译了HT17/?使您的类公开,即“公开类HT17”使您
HT18
classpublic@Rustam,Thomas Stets:公众是无关紧要的,它们在同一个包中。是否确实编译了这两个类?具有相同的包名和作为相同的包并不总是相同的。你能展示你的项目树吗?另外:您确定在尝试运行HT18之前编译了HT17/?使您的类公开,即“公开类HT17”使您
HT18
classpublic@Rustam,Thomas Stets:公众是无关紧要的,他们在同一个包裹里。非常感谢@karthikeyan,我可以不用-d吗?你可以,但你必须创建一个名为“有用”的文件夹,并将类复制到那里-d帮你做的。非常感谢@karthikeyan,我可以不用-d吗?你可以,但你必须创建一个名为“有用”的文件夹,并将类复制到那里-d为你做那件事。