2013-10-17 69 views
0

当前尝试使用Java中的对象。一切顺利,直到我编译。一直在阅读关于相同问题或相同给定错误的其他几个问题,此时我不确定我是否忘记了某些内容,或者需要更改我的类路径。未编译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); 
    } 
} 

的2个文件在同一目录中,我试图手动编译他们与 “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 
+0

你可以在这里粘贴错误消息或堆栈跟踪吗? – AJJ

+0

请发布确切的错误消息。 –

+2

回到软件包分支('..')的顶部,尝试使用'javac TesterClass/Tester.java'重新编译。 – MadProgrammer

回答

1

你需要去的目录层次结构的顶部,首先编译TesterClass然后编译Tester。由于您还没有编译您的TesterClass,因此Tester无法找到它。

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

我建议你使用自动为你编译的IDE。如果坚持手动编译,则需要编译全部中的正确的顺序。

3

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

因此,假设你的源文件在\Java\TesterClass,你需要在\Java

javac TesterClass\Tester.java TesterClass\TesterClass.java 

你也可能要开始拥有的Code Conventions for the Java Programming Language快速阅读的软件包名称假设是小写:P

更新

我只是想......

javac TesterClass\Tester.java 

它工作得很好。

您确定Tester.javaTesterClass.java位于TesterClass目录中吗?

更新与运行例如

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

\compile>javac TesterClass\Tester.java 

然后我运行它们...

\compile>java TesterClass.Tester 
Working 
+0

目前这两个文件都已成功编译。现在唯一的问题是,当我尝试运行文件时出现错误 –

+0

当您尝试执行“Tester”类时,您会得到什么确切的错误? – SudoRahul

+0

它告诉我“线程中的异常”main“java.lang.NoClassDefFoundError:Test/Tester(错误的名称:TesterClass/Tester)” –

0

的javac TesterClass \ TesterClass.java TesterClass \ Tester.java

会做

1

尝试改变包装的名称,以便它与类名称不匹配。现在他们是一样的。使其包装TesterClassPackage,然后使用main()方法将TesterClass导入到文件中。即使它们位于相同的包中,但有时您仍然需要从文件中导入文件,即使它们位于相同的包中。