【问题标题】:Java file not compilingJava文件未编译
【发布时间】:2013-10-25 09:22:11
【问题描述】:

目前正在尝试使用 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

【问题讨论】:

  • 你能把错误信息或者stacktrace粘贴到这里吗?
  • 请发布确切的错误信息。
  • 移回包分支的顶部(..)并尝试使用javac TesterClass/Tester.java重新编译
  • 添加了编译器错误,对不起!
  • 正如@MadProgrammer 所说——从源文件夹的根目录编译,如果你尝试从包的“内部”编译,那么javac 不理解你的包结构。按照惯例,包名也应该是小写的,不应该只是模仿类名。尝试“scratch”、“test”、“work”作为包名。真实系统使用包名称,如“myAccounts.customer”、“myAccounts.product”、“myAccounts.order”或“myPDF.reader”、“myPDF.display”或“game.monsters”、“game.map”, “游戏玩家”。

标签: java package


【解决方案1】:

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

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

javac TesterClass\Tester.java TesterClass\TesterClass.java

您可能还想快速阅读Code Conventions for the Java Programming Language,因为包名应该是小写的:P

更新

我刚试过...

javac TesterClass\Tester.java

而且效果很好。

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

更新了运行示例

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

\compile>javac TesterClass\Tester.java

然后我运行它们...

\compile>java TesterClass.Tester
Working

【讨论】:

  • 目前这两个文件编译成功。现在唯一的问题是我在尝试运行文件时遇到错误
  • 当你尝试执行 Tester 类时,你得到了什么确切的错误?!
  • 它告诉我“线程“main”java.lang.NoClassDefFoundError 中的异常:Test/Tester(错误名称:TesterClass/Tester)”
  • @KiptScriddy Test/Tester 不存在类文件,它们应该存在于Tester 中。看看更新
  • 为什么当我尝试在文件夹中将它作为“java Tester”运行时它不起作用?不太了解问题 atm 出在哪里
【解决方案2】:

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

错误明确指出找不到符号TesterClass,原因是TesterClass尚未编译。

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      javac TesterClass\TesterClass.java TesterClass\Tester.java

      会做的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-26
        相关资源
        最近更新 更多