1

目前正在尝试使用 Java 中的对象。一切都很好,直到我点击编译。一直在阅读有关相同问题或相同给定错误的其他几个问题,此时我不确定我是忘记了什么还是需要更改我的类路径。

主类文件:

package TesterClass;

public class Tester {
    public static void main(String[] args){

        TesterClass firstTest  = new TesterClass();
        firstTest.stringPrinter();
    }
}

应该用作包文件的文件:

package TesterClass;

public class TesterClass{

    private String workingSegment;

    public TesterClass(){
        workingSegment = "Working";
    }

    public void stringPrinter(){
        System.out.println(workingSegment);
    }
}

这两个文件位于同一目录中,我正在尝试使用“javac Tester.java”手动编译它们。我得到的错误是关于它与包有问题的事实。欢迎所有帮助!

编辑:忘记发布实际的编译器错误。

Tester.java:9: cannot find symbol
symbol  : class TesterClass
location: class TesterClass.Tester
        TesterClass firstTest;
        ^
Tester.java:11: cannot find symbol
symbol  : class TesterClass
location: class TesterClass.Tester
            firstTest = new TesterClass();
                        ^
2 errors
4

4 回答 4

3

移动到源代码树的顶部并编译这两个类...

所以,假设你的源文件在\Java\TesterClass,你需要从\Java

javac TesterClass\Tester.java TesterClass\TesterClass.java

您可能还想快速阅读Java 编程语言的代码约定,因为包名称假定为小写:P

更新

我刚试过...

javac TesterClass\Tester.java

它工作得很好。

您确定Tester.javaandTesterClass.javaTesterClass目录中吗?

更新了运行示例

所以,基本上,我把你.java的文件放到( ) 目录\compile下的目录中,并使用...编译它们TesterClass\compile\TesterClass

\compile>javac TesterClass\Tester.java

然后我运行它们...

\compile>java TesterClass.Tester
Working
于 2013-10-17T04:06:01.827 回答
1

尝试更改包名,使其与类名不匹配。现在他们是一样的。使其打包TesterClassPackage,然后使用main()方法将TesterClass导入文件中。即使它们在同一个包中,有时您也需要从字面上导入文件,即使它们在同一个包中。

于 2013-10-17T04:11:58.287 回答
1

您需要转到目录层次结构的顶部并首先编译您的TesterClass然后编译您的Tester. 由于您尚未编译您的TesterClassTester因此无法找到它。

该错误清楚地表明它无法找到符号TesterClass,并且TesterClass尚未编译的原因。

我建议您使用自动为您进行编译的 IDE。如果你坚持手动编译,你需要按照正确的顺序编译所有的类。

于 2013-10-17T04:00:44.057 回答
0

javac TesterClass\TesterClass.java TesterClass\Tester.java

会做的

于 2013-10-17T04:09:35.753 回答