最近开始学习Java进行考试。

在学习软件包时,尝试了此操作并收到错误消息。我所做的是



    //Creating class A (Within package the package: com.test.helpers)

    package com.test.helpers;
    public class A {
        public void sayHello(){
            System.out.println("Hello World");
        }
    }




    //And then the class App utilizing the class A

    import com.test.helpers.*;

    public class App{
        public static void main(String args[]){
            A a = new A();
            a.sayHello();
        }
    }




我将这两个文件都放在名为“ JavaTest”的目录中(在Windows 7中),
并首先使用命令javac -d . A.java编译A.java

然后,在尝试编译App.java时,出现以下错误消息:



    App.java:5: error: cannot access A
                    A a = new A();
                    ^
      bad source file: .\A.java
        file does not contain class A
        Please remove or make sure it appears in the correct subdirectory of the source path.
    1 error




但是,该问题似乎可以通过两种方式解决:


删除源文件A.java
将导入语句从import com.test.helpers.*;更改为
文件“ App.java”中的import com.test.helpers.A


如果您能解释一下这里发生的事情,我将不胜感激。或者我可能犯了一个愚蠢的人为错误或语法错误。

Here's the link to the source files

非常感谢你

最佳答案

将JavaTest文件夹下的A.java移至com / test / helpers。您看到的错误是针对编译器的,它抱怨A.java所在的文件夹与其程序包声明不匹配。请记住,没有A放在包中,就无法从App访问A。

从src driectory下运行以下命令来编译您的类

src> javac ./*.java ./com/test/helpers/*.java


然后从src文件夹下

src>java App


应该可以运行您的程序。

07-28 01:11
查看更多